JavaScript Let、var和Const

一、ECMAScript 2015

        ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const。

        这两个关键字在 JavaScript 中提供了块作用域(Block Scope)变量(和常量)。

        在 ES2015 之前,JavaScript 只有两种类型的作用域:全局作用域函数作用域

二、全局作用域

        全局(在函数之外)声明的变量拥有全局作用域

        全局变量可以在 JavaScript 程序中的任何位置访问。

三、函数作用域

        局部(函数内)声明的变量拥有函数作用域

        局部变量只能在它们被声明的函数内访问。

四、JavaScript 块作用域

        通过 var 关键词声明的变量没有块作用域

        在块 {} 内声明的变量可以从块之外进行访问。

        在 ES2015 之前,JavaScript 是没有块作用域的。

        可以使用 let 关键词声明拥有块作用域的变量。

        在块 {} 内声明的变量无法从块外访问。

        在块作用域内使用 const 声明的变量与 let 变量相似。

五、重新声明变量

        使用 var 关键字重新声明变量会带来问题。

        在块中重新声明变量也将重新声明块外的变量。

        使用 let 关键字重新声明变量可以解决这个问题。

        在块中重新声明变量不会重新声明块外的变量。

六、循环作用域

        在循环中使用的变量使用 var 重新声明了循环之外的变量。

        在循环中使用的变量使用 let 并没有重新声明循环外的变量。

        如果在循环中用 let 声明了变量 i,那么只有在循环内,变量 i 才是可见的。

七、函数作用域

        在函数内声明变量时,使用 var 和 let 很相似。它们都有函数作用域。

八、全局作用域

        如果在块外声明声明,那么 var 和 let 也很相似。它们都拥有全局作用域。

九、HTML 中的全局变量

        使用 JavaScript 的情况下,全局作用域是 JavaScript 环境。

        在 HTML 中,全局作用域是 window 对象。

        通过 var 关键词定义的全局变量属于 window 对象。

        通过 let 关键词定义的全局变量不属于 window 对象 。

十、重新声明

        允许在程序的任何位置使用 var 重新声明 JavaScript 变量;

        在相同的作用域,或在相同的块中,通过 let 重新声明一个 var 变量是不允许的;

        在相同的作用域,或在相同的块中,通过 let 重新声明一个 let 变量是不允许的;

        在相同的作用域,或在相同的块中,通过 var 重新声明一个 let 变量是不允许的;

        在不同的作用域或块中,通过 let 重新声明变量是允许的;

        在同一作用域或块中,不允许将已有的 var 或 let 变量重新声明或重新赋值给 const;

        在同一作用域或块中,为已有的 const 变量重新声明声明或赋值是不允许的;

        在另外的作用域或块中重新声明 const 是允许的.

十一、在声明时赋值

        JavaScript const 变量必须在声明时赋值。

十二、不是真正的常数

        关键字 const 有一定的误导性。

        它没有定义常量值。它定义了对值的常量引用。

        因此,我们不能更改常量原始值,但我们可以更改常量对象的属性。

十三、原始值

        如果我们将一个原始值赋给常量,我们就不能改变原始值。常量对象的属性可以更改,但是您无法重新为常量对象赋值。可以更改常量数组的元素,但是无法重新为常量数组赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值