ფუნქციის მარცხნივ გამოსახულება JavaScript-ში
მოდით განვიხილოთ შემდეგი კოდი:
+function func() {
console.log('!');
}
როგორც უკვე იცით, ეს ფუნქცია არის ფუნქციური გამოსახულება, მიუხედავად იმისა, რომ მას აქვს სახელი (ჩვენ უკვე გავარკვიეთ, რომ სახელის ქონა საერთოდ არაა კრიტერიუმი). ავიღოთ ეს პლუსი - და მივიღებთ Function Declaration-ს:
function func() {
console.log('!');
}
მოდით დავსვათ + ხაზის წინ
ფუნქციას - ის ისევ გახდება Function Expression:
+
function func() {
console.log('!');
}
ახლა კი პლუსის შემდეგ დავსვათ რიცხვი 1
და მძიმით - ჩვენი ფუნქცია გახდება Function
Declaration:
+1;
function func() {
console.log('!');
}
რატომ არის ასე: იმიტომ, რომ პირველ ხაზზე დაწერილია ერთი დასრულებული ბრძანება, რომელიც დახურულია მძიმით. ამიტომ ეს ბრძანება არანაირად არ მოქმედებს ჩვენს ფუნქციაზე.
სინამდვილეში მძიმის აღება შეიძლება, რადგან JavaScript-ში ის არაა სავალდებულო - ფუნქცია მაინც დარჩება Function Declaration-ად:
+1
function func() {
console.log('!');
}
ხოლო თუ 1-ის შემდეგ დავამატებთ კიდევ ერთ
პლუსს, მაშინ ფუნქცია გახდება Function Expression:
+1+
function func() {
console.log('!');
}
რატომ არის ასე: იმიტომ, რომ პირველ ხაზზე არასრული გამოსახულებაა - დგას პლუსი და მის შემდეგ არაფერი. ამიტომ JavaScript-ის ინტერპრეტატორი ფიქრობს, რომ ეს პლუსი ეხება ქვემოთ მყოფ ხაზს, ანუ ჩვენს ფუნქციას.
თუ კი პირველ ხაზზე დგას დასრულებული გამოსახულება, მაშინ JavaScript ავტომატურად ასვამს მას მძიმით და ეს გამოსახულება არანაირად არ მოქმედებს ჩვენს ფუნქციაზე.
დაადგინეთ, არის თუ არა წარმოდგენილი ფუნქცია Function Declaration თუ Function Expression:
-
function func() {
console.log('!');
}
დაადგინეთ, არის თუ არა წარმოდგენილი ფუნქცია Function Declaration თუ Function Expression:
-1;
function func() {
console.log('!');
}
დაადგინეთ, არის თუ არა წარმოდგენილი ფუნქცია Function Declaration თუ Function Expression:
-1
function func() {
console.log('!');
}
დაადგინეთ, არის თუ არა წარმოდგენილი ფუნქცია Function Declaration თუ Function Expression:
1
function func() {
console.log('!');
}
დაადგინეთ, არის თუ არა წარმოდგენილი ფუნქცია Function Declaration თუ Function Expression:
-1-
function func() {
console.log('!');
}