栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

是否用

let
const
不声明变量?这到底是怎么回事?

所有声明

var
let
const
function
function*
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;
语句使用
undefined
like进行了初始化
let y = undefined;

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

是否有任何区别

let
,并
const
在此问题?

不,就吊装而言,它们的作用相同。它们之间的唯一区别是,

const
蚂蚁必须是并且只能在声明的初始化程序部分中分配(
const one =1;
const one;
以及以后的重新分配
one = 2
都无效)。

1:当然,

var
声明仍然仅在功能级别上起作用



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号