js中var, const, let的区别

xiaoxiao2021-02-28  61

var声明的变量可以修改,初始化的时候可以不赋值,不会报错,输出结果为undefined.

var a = 0; console.log(a)//输出0 function change(){ a = 1; console.log(a);//输出1 } change(); console.log(a);//输出1

const和let声明的变量都只在块级作用于内有效,不同的是const声明的变量不可改变,而且const在声明变量的时候必须赋初值,否则会报错,但是let声明的变量可以改变类型和变量值。

const a = 0; //const a;//这一行将会报错,必须初始化值 console.log(a); const b = 0; //b = 1;//这一行将会报错,不能修改赋值 console.log(b);

对于复合类型的变量,数组、对象等类型,变量名不指向值,而是指向数据所在的地址。const声明的变量,保证变量指向的地址不变,可以修改,但是必须保证对应的地址不发生改变。

const demo = []; //demo = [0, 1, 2];//这一行将报错,因为此时demo对应的地址与[]的地址不是同一个 demo[0] = 0; demo[1] = 1; demo[2] = 2; console.log(demo.length);//输出3,demo指向的地址没有发生改变,改变的只是内部的数据。

let声明的变量只在块级作用域里面起作用。

let a = 0; console.log(a);//输出0 function change(){ let a = 1; console.log(a);//输出1 } change(); console.log(a);//输出0

注意:如果想让数组、对象等类型变量的地址和数据不被修改,可以使用Object.freeze(name)对变量进行冻结,冻结以后的对象,一切修改地址和数据的操作都将不会生效,对象的地址和内部数据以及对象的属性都将会冻结。 参考文章:http://www.cnblogs.com/dupd/p/6096235.html

转载请注明原文地址: https://www.6miu.com/read-53997.html

最新回复(0)