为了账号安全,请及时绑定邮箱和手机立即绑定

js中暂时性死区的疑问

js中暂时性死区的疑问

子衿沉夜 2018-11-08 14:15:08
看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];

}


查看完整回答
反对 回复 2018-12-03
  • 1 回答
  • 0 关注
  • 1100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信