当前位置: 首页 > 面试题库 >

JavaScript什么是时间死区?

安高义
2023-03-14
问题内容

我听说,在初始化之前进行访问letconst值会ReferenceError由于一个称为“ 临时死区” 的原因而导致错误。

什么是时间盲区,它与范围和起重有何关系,在什么情况下会遇到?


问题答案:

let与以下内容const有两个主要区别var

  1. 它们是块作用域的。
  2. var在声明之前访问a 会有结果undefined;在声明之前访问a letconstthrows ReferenceError
console.log(aVar); // undefined

console.log(aLet); // causes ReferenceError: aLet is not defined

var aVar = 1;

let aLet = 2;

从这些示例中可以看出,let声明(和const,以相同的方式工作)可能不会被吊起,因为aLet在赋值之前似乎并不存在。

这不是的情况下,however- letconst被悬挂(如varclassfunction),但有输入范围和所声明,他们不能被访问之间的时段。该时间段是时间盲区(TDZ)。

该TDZ结束时aLet被宣布,而不是分配:

//console.log(aLet)  // would throw ReferenceError



let aLet;

console.log(aLet); // undefined

aLet = 10;

console.log(aLet); // 10

此示例显示let被提升:

let x = 'outer value';

(function() {

  // start TDZ for x

  console.log(x);

  let x = 'inner value'; // declaration ends TDZ for x

}());

x在内部范围内访问仍会导致ReferenceError。如果let不悬挂,它将记录outer value

TDZ是一件好事,因为它有助于突出显示错误-很少在声明之前访问值。

TDZ也适用于默认函数参数。参数从左到右求值,每个参数在TDZ中,直到被分配:

// b is in TDZ until its value is assigned
function testDefaults(a=b, b) { }
testDefaults(undefined, 1); // throws ReferenceError because the evaluation of a reads b before it has been evaluated.


 类似资料:
  • 本文向大家介绍暂停死区是什么?相关面试题,主要包含被问及暂停死区是什么?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 在代码块内,使用let、const命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”

  • 因为问题已经被问了很多次了,但我不能理解清楚。 根据提供的答案,JavaScript运行时意味着执行JavaScript代码的地方。 现在Nodejs的定义,它是一个异步的javascript运行时,这是否意味着在Nodejs内部执行javascript? 另外,javascript runtime environment,是指执行javascript代码的环境或机器设置吗? 对不起,我重复了我的

  • 用node做中间件的意义是什么?另外,怎么用node做中间件? 平时提到node,大家都会说node一般都是做中间件使用,我个人用node写过后台接口,但是不理解用它做中间件是干什么,你们在项目中有用node做中间件的实际业务吗?

  • 主要内容:JavaScript 的历史,JavaScript 与 ECMAScript 的关系,如何运行 JavaScript,JavaScript 的特点JavaScript(简称“JS”)是当前最流行、应用最广泛的客户端脚本语言,用来在网页中添加一些动态效果与交互功能,在 Web 开发领域有着举足轻重的地位。 JavaScript 与 HTML 和 CSS 共同构成了我们所看到的网页,其中: HTML 用来定义网页的内容,例如标题、正文、图像等; CSS 用来控制网页的外观,例如颜色、字体、

  • JavaScript ( JS ) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。(MDN) JavaScript 是一种编程语言,主要参与构建Web前端应用。 1. JavasScript 的由来 早期的浏览器是不具备与用户交互能力的,可以想象一下,在那个电话拨号上网的年代,带宽只有 56Kbps,也就是意味着标准最高下载速率只有8KB/s。 在这个速度下,表单提交就是噩梦般的存在。

  • 本文向大家介绍请问什么是死锁(deadlock)?相关面试题,主要包含被问及请问什么是死锁(deadlock)?时的应答技巧和注意事项,需要的朋友参考一下 考察点:线程死锁 两个线程或两个以上线程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是这些线程都陷入了无限的等待中。 例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生