es6 1-let 和const

原创 MMJC6 随笔 2016年javascript学习笔记 210阅读 2018-02-26 16:35:12 举报

let

1.let声明的变量只在代码块内有效,应用:for循环中的let声明的计数器i只在每次循环中有效,新循环则是一个新的变量,在循环内部的函数中的i是当前循环的i而不是es5中循环完成后的全局变量i。

2.let声明的变量不存在变量提升,在声明之前引用,会抛出ReferenceError;
暂时性死区是指:在代码块内,let声明变量,就会绑定此代码块内的变量,即外部声明的同名变量无法获取,在声明之前,变量不可用,会报错。
注意:typeof 不再是绝对安全,如果在let声明变量之前,使用typeof 变量,会报错

3.不允许在相同作用域内重复声明,不能在函数内重复声明参数。

4.let实际为javascript新增了块级作用域,外部不受内部影响,即内部可声明和外部同名的变量。使立即执行函数没有必要了,可把函数直接写在作用域中。
ES5没有块级作用域的弊端:1.内部变量会覆盖外部变量,2.循环中的计数器泄露成全局变量

5.考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。如在if判断中应写成函数表达式的方式。

const

1.const声明一个常量的值,一旦被生命,则不能被改变。因此声明时必须被赋值。

2.只在作用域内有效。

3.不存在变量提升。

4.不允许被重复声明。

5.const的本质是不可更改变量在内存中的地址,因此,可改变const声明的object,arr的属性。

评论 ( 5 )
最新评论
zvj1995 2F 2018-02-27 09:53:38 5F

var在ES5中以前用的太多了,大家都比较习惯,对比能看出差距

MMJC6 3F 2018-02-27 09:28:10 4F

OK

橙云生 2018-02-27 09:10:31 3F

学习过程中加上代码比较好点 一个小建议

MMJC6 1F 2018-02-26 17:30:43 2F

可以不用var

zvj1995 2018-02-26 16:42:57 1F

其实应该把var也拿上来比较一下