0
点赞
收藏
分享

微信扫一扫

JMeter进行WebSocket压力测试

云岭逸人 2023-07-17 阅读 90

1.定义:

暂时性死区(Temporal Dead Zone,简称TDZ)是指在 JavaScript 中使用 let 或 const 声明变量时,变量在其声明之前不能被访问或使用的特性。

在 JavaScript 中,变量声明提升是指在执行代码之前,变量声明会被提升到作用域的顶部。然而,使用 let 或 const 声明的变量会受到暂时性死区的限制。

具体来说,当程序执行到包含 let 或 const 声明的代码块时,会创建一个称为暂时性死区的区域,该区域从声明开始直到块结束。在这个区域内,变量虽然已经被声明,但是在声明之前访问该变量会导致引擎抛出一个错误。

这种行为是为了解决 JavaScript 中变量声明提升带来的一些问题。通过暂时性死区,可以在变量被声明之前阻止对变量的访问,从而避免了在变量未初始化的情况下使用它,增强了代码的可靠性。

2.该怎么理解呢?

	let i = 1
    {
      //死区开始
      
      console.log(i) //死区里边拿不到外边的i,也拿不到本代码块内的i
      
	  //死区结束
      let i = 2 
      console.log(i) //直到这里才能正常使用 i 
    }

 ES6 明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

需要注意的是,使用 var 声明的变量不存在暂时性死区,而是会被提升到其作用域的顶部,虽然初始值为 undefined。因此,在使用 let 或 const 声明变量时,要特别注意变量的作用域和声明的顺序,以避免暂时性死区带来的问题。

function bar(x = y, y = 2) {
  return [x, y];
}
 
bar(); // 报错

上面代码中,调用bar函数之所以报错(某些实现可能不报错),是因为参数x默认值等于另一个参数y,而此时y还没有声明,属于”死区“.

改成如下代码:

function bar(x = 2, y = x) {
  return [x, y];
}
bar(); // [2, 2]

上面代码中,如果y的默认值是x,就不会报错,因为此时x已经声明了。

总结:

暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

​ 注意:ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在 ES5 是很常见的,现在有了这种规定,避免此类错误就很容易了。
 

举报

相关推荐

0 条评论