ES6学习(let,var,const)

我们现在为什么要选择let、const,抛弃var呢?

作为一个程序员,var简直就是违背编程逻辑的一种用法。
JS会将声明提前,而定义的值不会。

var time = 1;
var time = 2;

按理说,编译器是不允许这样的代码出现的,会报already defined之类问题。
在js中,这竟然是允许的,所以说,在代码量庞大的时候,我们很有可能是会忘记某一个变量是之前定义过的,后面的同名变量定义都会覆盖之前的变量,后果是很严重的,如果你记忆力好的话,可以挑战一下!

作用域

在这之前,我们有必要说明一下作用域问题。
var 是全局作用域或者是函数作用域,所以我们是在全局都可以取值的,并且是后面的变量定义会覆盖前面的。
而let、const的作用域是块作用域。
所以所,这两种定义方式是不能重复定义的
而他俩之间的区别我们应该都知道,const是常量嘛,是不能修改的。

还有需要注意的一点,临时性死区,在块级作用域中,声明要在使用之前。

值得注意的是,如果const定义了一个对象的话

const info = {
	"name":"xiaoming",
	"age" : 18
}

info.age = 20

如果储存一个对象的话,其实储存的是引用,是地址。
学习C的时候我们应该很明白这一块,指针害人不浅
我们不可以修改该变量引用的对象,但是可以修改对象中的内容,如果连对象中的属性也不能让他修改的话,我们就要

const info = Object.freeze({"name":"peter","age":8
})

freeze就是冻结的意思嘛,所以就连属性都不能修改了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章