js中暂时性死区的疑问

看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...


子衿沉夜
浏览 1101回答 1
1回答

缥缈止盈

编译后是这样的,因为是严格模式,所有变量必须先声明"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];}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript