您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

JavaScript ES6中是否不使用let或const声明的变量?

JavaScript ES6中是否不使用let或const声明的变量?

@thefourtheye的正确说法是在声明这些变量之前 它们。但是,这要复杂得多。

是否用letconst不声明变量?这到底是怎么回事?

varletconstfunctionfunction*class) 在JavaScript。这意味着,如果在范围内声明了名称,则在该范围内,标识符将始终引用该特定变量:

x = "global";
// function scope:
(function() {
    x; // not "global"

    var/let/… x;
}());
// block scope (not for `var`s):
{
    x; // not "global"

    let/const/… x;
}

对于函数作用域和块作用域1都是如此。

间的var/ function/ function*声明和let/ const/ class声明是 。当在范围的顶部创建绑定时, 可以使用undefined或(生成器)函数对前者进行初始化。但是,按词法声明的变量保持 。这意味着ReferenceError您尝试访问它时将引发异常。它只会得到当初始化let/ const/class这就是所谓的(上述)之前声明进行评估,一切 时间盲区

x = y = "global";
(function() {
    x; // undefined
    y; // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());

请注意,一条let y;语句使用undefinedlike进行了初始化let y = undefined;

时间 盲区不是语法的位置,而是 时间 的变量(范围)的创建和初始化之间。只要未执行该代码(例如,函数体或简单的死代码),就可以在声明上方的代码中引用该变量不是一个错误,并且如果在初始化之前访问变量,即使访问该变量,也会引发异常。代码位于声明下方(例如,在过早调用的提升函数声明中)。

是否有任何区别let,并const在此问题?

不,就吊装而言,它们的作用相同。它们之间的唯一区别是,const蚂蚁必须是并且只能在声明的初始化程序部分中分配(const one = 1;const one;以及以后的重新分配one = 2都无效)。

1:当然,var声明仍然仅在功能级别上起作用

javascript 2022/1/1 18:13:49 有522人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶