gpt4 book ai didi

javascript - ES6 是否引入了一种机制来创建 block 作用域函数语句(而不是表达式)?

转载 作者:行者123 更新时间:2023-12-02 16:16:41 25 4
gpt4 key购买 nike

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();

Demo on babeljs.io

关于javascript - ES6 是否引入了一种机制来创建 block 作用域函数语句(而不是表达式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29500720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com