// 函数声明语句{ let a = 'secret'; function f() { return a;
}
}// 函数表达式{ let a = 'secret'; let f = function () { return a;
};
}
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
ES6环境下的let变量声明
// 函数声明语句{ let a = 'secret'; function f() { return a; } } f();//secret
在语句块中声明了一个变量a和一个函数f,其中变量a使用了let关键字,说明它是一个局部变量,作用域在其所在的语句块中,而函数f的作用域为全局的,在语句块的外面可以访问。又因为闭包的关系,函数f使用到的变量指向let a。
这个和如下代码是不同的
{ let a = 'secret'; }function f() { return a; }f();//Uncaught ReferenceError: a
对于下面的代码:
// 函数表达式{ let a = 'secret'; let f = function () { return a; }; } f();//Uncaught ReferenceError: f
在语句块中声明了变量a和函数f,在语句块的外面不能访问函数变量f
// 函数表达式{ let a = 'secret'; let f = function () { return a; }; f()://secret}
添加回答
举报
0/150
提交
取消