js const let 计算题:求输出结果

108 阅读1分钟
        const obj1 = obj
        let a1 = obj.a
        obj1.a = 200
        console.log(obj.a)
        console.log(a1)
        a1 = 300
        console.log(obj.a)
        console.log(obj1.a)

打印结果:

image.png

image.png 画图理解+逐句解释

const obj = {a:100}//定义常量obj,{}内为对象var a
const obj1 = obj //常量obj1 和 常量obj都指向a地址
let a1 = obj.a //新声明一个let a1 里面存放此时的obj.a=100 ,即a1里面的值为100
obj1.a = 200 //将obj1 指向的对象a的值变为200
console.log(obj.a) //打印obj.a 200
console.log(a1) //打印a1 ,如图a1为100
a1 = 300 //let a1的值变为300,如图与a变量无关
console.log(obj.a) //a存放的值为200,没变
console.log(obj1.a) 

解析:区分const与let、var

const只能存储常量和对象的地址,地址不可以修改否则会报错,但是地址内存储的对象属性可以修改。