Javascript 在ES6中,什么是新规范;块级函数声明“;什么意思?

Javascript 在ES6中,什么是新规范;块级函数声明“;什么意思?,javascript,ecmascript-6,Javascript,Ecmascript 6,我将在es6兼容性表中尝试学习 在绑定部分,它显示“块级函数声明?”。我找不到任何博客或文档,除了官方的文字组合 问题:什么是“块级函数声明”?示例kangax正在测试: alert(function(){ 'use strict'; function f() { return 1; } { function f() { return 2; } } return f() === 1; }()); 这意味着功能“提升”的行为方式与let(vsv

我将在es6兼容性表中尝试学习

在绑定部分,它显示“块级函数声明?”。我找不到任何博客或文档,除了官方的文字组合


问题:什么是“块级函数声明”?

示例kangax正在测试:

alert(function(){
    'use strict';
    function f() { return 1; }
    {
      function f() { return 2; }
    }
    return f() === 1;
}());
这意味着功能“提升”的行为方式与
let
(vs
var
)相同

在ES5中,大括号是“装饰”,除非它们出现在几个关键字之后,如
for
if
try
,等等。因此,第二个
f()
会“重击”第一个,但在ES6 compat运行时,第二个
f()会
是块专用的,因此不会替换第一个函数定义的名称
f

在ES6中,大括号(
{…}
)表示块,即使前面没有关键字。也就是说,我在ES6代码中没有看到太多的任意块,可能是因为缺乏实践、无知,或者是因为缺乏需求;函数作用域在JS中运行得很好。

请回答这个问题


你可以找到一个很好的问题描述和非常详细的答案。

对此无可争辩:-@Bergi ohh,当然,很难与自己的答案争论。)你最后的一句话是:我猜你只是没有注意到(let…{…}块的
,但它们确实存在:-)诚然,它们内部的函数声明是稀疏的。@Bergi:我的最后一句话继续我的倒数第二句,所以任意性意味着非ES5块,仅适用于作用域。。。