函数声明与函数表达式的区别
2024年7月29日大约 1 分钟
函数声明与函数表达式的区别
函数表达式是将函数赋值给变量的方式来定义函数
var func1 = function (value) {
console.log(value);
};
函数声明是使用 function 关键字进行定义的
function func2(value) {
console.log(value);
}
函数表达式与函数声明主要的区别有以下几点:
变量提升:
函数声明会发生变量提升,即在声明前调用并不会抛出异常。
这里使用 Var 定义的变量也会发生变量提升,但是只是声明了变量并未对齐赋值,所以使用 var 定义的函数在未定义前调用会抛出异常,但是打印变量不会。作用域:
函数声明的作用域是在声明它们的作用域中。例如,在函数内部声明的函数将在整个函数内部可见。
函数表达式的作用域取决于它们的定义位置。如果在全局作用域内定义,它们将在整个全局作用域内可见;如果在函数内部定义,它们将仅在该函数内可见命名:
函数声明需要一个名称,而函数表达式可以是匿名的,也可以有名称。
匿名函数表达式可以在函数体内部引用自身,但函数声明无需这样做。语法
函数声明使用 function 关键字来定义函数,后跟函数名称和参数列表。
函数表达式将函数赋值给一个变量,函数可以是匿名的或具有名称,语法类似于赋值表达式。