ES6 是否引入了一种机制来制作 block 作用域函数语句(而不是表达式)?
以下内容在 ES5 中是非法的,我认为在 ES6 中仍然如此?
!function() {
'use strict';
{
function foo () {
console.log('foo!');
}
}
foo();
}();
编辑:更正术语。
最佳答案
您的代码在 ES6 中语法有效且“合法”。
但它不会按“预期”工作:即使在 ES6 中,函数也受封闭函数的作用域限制(如果在全局作用域中运行,则不受任何限制)。
您可以使用 block (真正的 block !)范围可见性和 let
来声明它:
function bar() {
{
let foo = function() {};
foo(); // foo is defined
}
foo(); // foo is not defined
}
bar();
关于javascript - ES6 是否引入了一种机制来创建 block 作用域函数语句(而不是表达式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500720/