Discuss / JavaScript / 函数声明和函数表达式不完全一样。

函数声明和函数表达式不完全一样。

Topic source

龙雀

#1 Created at ... [Delete] [Delete and Lock User]

变量提升时,函数声明的变量名字和值都会提升,而函数表达式只提升名字。

例如:

a();
b();

function a(){
    //....
}

var b = function () {
    //....
}

a()能正常调用,而b()会报错。

lmtooT_T

#2 Created at ... [Delete] [Delete and Lock User]

function a(){ //.... }

var b = function () { //.... }

这两种函数的声明是有区别的,第一种会先加载,不管函数调用的先后,而第二种,只有在给b赋值的时候才去加载那个函数,然后赋值给b变量

__Tony猫

#3 Created at ... [Delete] [Delete and Lock User]

另外这只是js函数定义的其中两种方式而已,至少有5种方式,建议搜搜看看。

廖雪峰

#4 Created at ... [Delete] [Delete and Lock User]

不要使用变量提升,这是js设计错了,换其他语言直接报错

a(); b();

function a(){ //.... }

var b = function () { //.... } 我这边报错的是: a(); VM21590:1 Uncaught ReferenceError: a is not defined at <anonymous>:1:1 (anonymous) @ VM21590:1 b() VM21596:1 Uncaught ReferenceError: b is not defined at <anonymous>:1:1 (anonymous) @ VM21596:1 function a(){ //.... }
undefined var b = function () { //.... } undefined


  • 1

Reply