看ES6中let的使用时,提到了暂时性死区的概念,如下ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。但是下文提到function bar(x = y, y = 2) { return [x, y];}bar(); // 报错这里并没有使用let或者const,为什么也会因为死区而报错呢?原文链接:http://es6.ruanyifeng.com/#do...
1 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
编译后是这样的,因为是严格模式,所有变量必须先声明
"use strict";
function bar() {
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : y;
var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
return [x, y];
}
添加回答
举报
0/150
提交
取消