为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在第一次console.log的后面去改变的extension[0]里面的值, 第一次console.log里面extension[0]的值为什么不是es7而是es2016呢?

<script>
    const esobj = {
        name: "es6",
        year: "2015",
        extension: ["es7", "es8", "es9"]
    }
    Object.freeze(esobj);
    esobj.name = "es2015"
    console.log(esobj)
    esobj.extension[0] = "es2016"
    console.log(esobj)
</script>

正在回答

1 回答

1、上面的extension是个数组,是引用数据类型,引用数据类型是存储在堆内存的

2、Object.freeze()是浅层冻结,不是深层冻结

3、console.log()的输出可以理解为是一种异步的,可以看下这里:https://www.jianshu.com/p/f7535d62acbd


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我在第一次console.log的后面去改变的extension[0]里面的值, 第一次console.log里面extension[0]的值为什么不是es7而是es2016呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信