JS命名
const c =1000;
修改后 c=2000;//报错,因为const创建的变量,存储的值不能被修改(可以理解为常量)
var arr1 = [3, 4];
var arr2 = arr1;
arr2[0] = 1;
arr2 = [4, 5];
arr2[1] = 2;
arr1[1] = 0;
console.log(arr1, arr2); //=> 1, 0, 4, 2
数组也是对象,属于引用类型,会开辟一个新的堆内存保存 [3,4]
往下,arr2 = arr1,此时两个变量同时保存一个堆内存的地址
改变 arr2 会反映到 arr1,此时 arr1: [1,4] arr2: [1,4]
新开辟一个堆内存,保存 [4,5],然后再把地址赋值给 arr2
此时两个变量关联的内存不再一样,对其的操作不再相互影响,此时 arr1: [1,4] arr2:[4,5]
再次赋值后,arr1: [1,0] arr2: [4,2]
基本类型:undefined、null、string、number、boolean、symbo(ES6)
普通基本类型:undefined、null、symbol(ES6)
特殊基本包装类型:string、number、boolean
引用类型:Object、Array、RegExp、Date、Function
区别:引用类型值可添加属性和方法,而基本类型值则不可以。
基本类型
基本类型的变量是存放在栈内存(Stack)里的
基本数据类型的值是按值访问的
基本类型的值是不可变的
基本类型的比较是它们的值的比较
引用类型
引用类型的值是保存在堆内存(Heap)中的对象(Object)
引用类型的值是按引用访问的
引用类型的值是可变的
引用类型的比较是引用的比较