使用const 和 let声明变量区别以及使用过程中的坑

1.const 声明的变量值是固定的,是不能够修改的

如果声明的变量是简单的数据类型:Number、String、Boolean、Undefined、Null
const num =1
num+=1
console.log(num) //exception
但是如果声明的变量是复杂的数据类型:数组、函数、对象等
例如:
const arr=['18','k']
arr.push('red')
console.log(arr) //arr=['18','k','red']
因为这里arr在栈中存储的是地址:0x112233 这个地址指向堆中的数组对象['18','k','red'] 所以在arr中添加'red'时实际上是在堆中添加了数据,arr在栈中所保存的地址并没有发生改变。

但是如果
const arr=['18','k']
arr=['18','k','red']
console.log(arr) //此时会报错,因为arr变成了一个新的数组,对应的栈中的地址也发生了改变,而const定义的变量是常量是固定的,不允许被更改。

2.let 声明的变量值是可变的,而且let声明的变量是一个局部变量,只在{}中生效,出了{}就失效了。

{
   let name='kkk'
   name = 'sss'
   console.log(name) // 结果为字符串类型的:sss,说明let声明的变量是可更改的
   
}
console.log(name) //此时会出现错误提示,name未声明
因为let 声明的变量只在块中生效,是局部变量。

你可能感兴趣的:(前端开发,javascript,前端)