javascript - js中暂时性死区的疑问

查看:134
本文介绍了javascript - 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...

解决方案

编译后是这样的,因为是严格模式,所有变量必须先声明

"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];
}

这篇关于javascript - js中暂时性死区的疑问的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆