Выражение в JS : что-то, что возвращает значение
Пример: Попробуйте выполнить следующие действия в консоли Chrome:
a = 10
output : 10
(1 + 3)
output = 4
Декларация / Заявление : что-то, что не возвращает значение
Пример:
if (1 > 2) {
// do something.
}
здесь (1> 2) - это выражение, но утверждение «если» - нет. Это ничего не возвращает.
Точно так же у нас есть объявление функции / оператор против выражения функции
Давайте возьмем пример:
// test.js
var a = 10;
// function expression
var fun_expression = function() {
console.log("Running function Expression");
}
// funciton expression
function fun_declaration() {
console.log("Running function Statement");
}
Важно:
Что происходит, когда движки JavaScript запускают вышеуказанный файл js.
Теперь предположим, что мы обновили js до.
// test.js
console.log(a) //output: udefined (No error)
console.log(fun_expression) // output: undefined (No error)
console.log(fun_expression()) // output: Error. As we trying to invoke undefined.
console.log(fun_declaration()) // output: running function statement (As fun_declaration is already hoisted in the memory).
var a = 10;
// function expression
var fun_expression = function() {
console.log('Running function expression')
}
// function declaration
function fun_declaration() {
console.log('running function declaration')
}
console.log(a) // output: 10
console.log(fun_expression()) //output: Running function expression
console.log(fun_declaration()) //output: running function declaration
Вывод, упомянутый выше в комментариях, должен быть полезен для понимания различий между выражением функции и оператором / объявлением функции.