我在es6兼容性表中试图了解Here。
在绑定部分中它表示"块级函数声明?"。除了关于这些词组合的官方spec之外,我无法找到任何博客或文档。
问题:什么是"块级函数声明"指的是?
答案 0 :(得分:4)
示例kangax正在测试:
alert(function(){
'use strict';
function f() { return 1; }
{
function f() { return 2; }
}
return f() === 1;
}());
这意味着“吊装”功能与let
(vs var
)的行为相同。
在ES5中,大括号是“装饰”,除非它们出现在for
,if
,try
等几个关键字之后,因此,第二个f()
会“clobber”是第1个,但在ES6-compat运行时,第2个f()
对于块是私有的,因此不会替换第1个函数定义的名称f
。
在ES6中,大括号({ ... }
)表示一个块,即使没有前面的关键字也是如此。也就是说,我没有在ES6代码中看到很多任意的块,可能只是因为缺乏实践,无知,或者仅仅是因为缺乏需求;函数范围在JS中运行良好。
答案 1 :(得分:1)
结帐SO What are the precise semantics of block-level functions in ES6?问题。
你找到一个很好的问题描述和非常详细的答案。