引用错误,用于使用 let 检查延迟声明的变量
ReferenceError for checking late declared variable with let?
我正在阅读有关let
关键字并浏览了以下代码块:
typeof
对临时死区 (TDZ) 变量的行为与对未声明(或声明!例如:
{
// `a` is not declared
if (typeof a === "undefined") {
console.log( "cool" );
}
// `b` is declared, but in its TDZ
if (typeof b === "undefined") { // ReferenceError!
// ..
}
// ..
let b;
}
那么如何检查它的typeof
因为它总是会给出引用错误呢?
我们需要使用try ... catch
块作为typeof
的替代品吗?
{
try {
console.log(typeof(b));
} catch (e) {
console.log(e);
}
let b;
}
那么如何检查它的
typeof
因为它总是会给出参考错误呢?
你不能。在声明变量之前访问变量是一个编程错误。
最好的
做法是声明变量,我们将首先使用它或在顶部声明
let b;
if (typeof b === "undefined") { //No ReferenceError!
// ..
}
因此,这是从TDZ中删除的最佳方法。
从文档中:
在 ECMAScript 2015 中,let 将变量提升到块的顶部。但是,在变量声明之前引用块中的变量会导致
ReferenceError
。变量从块开始到声明被处理都处于"临时死区"。
因此,在您的代码中,您正在尝试访问尚未声明的变量。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 可以简化嵌套的延迟Q Promises解析吗
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何利用多链接延迟检查并显示ping结果,然后使用JavaScript选择最快的URL
- knockoutjs,复选框是有延迟的检查
- 如何在使用高阶组件进行身份验证时延迟检查redux存储
- 具有延迟的多个复选框选择以检查其他复选框更改
- 流星中的状态检查延迟
- 引用错误,用于使用 let 检查延迟声明的变量
- 如何使用 jquery 延迟对象检查元素是否在 DOM 中