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

老师 你好 有个疑问?想请教您一下。

const esObj = {

           name:'es6',

           year:2015,

           extension:['es7','es8','es9']

       }

       console.log(esObj);

       Object.freeze(esObj);

       esObj.extension[0] = 'es66666';

       console.log(esObj);

为什么上下 打印的 数据都是一样的,JS不是上下执行的吗?

正在回答

1 回答

应该是输出之后才在控制台展开的吧,展开时候里面的值已经变了。

可以在两处都直接输出:

esObj.extension[0]

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

新world 提问者

那要是这样,和JS上下执行的顺序 不矛盾吗?第一个打印 是值改变之前的,第二打印是改变之后的呀
2021-02-25 回复 有任何疑惑可以回复我~
#2

谢成 回复 新world 提问者

代码从上往下执行没有问题。但展开的时候取的是最新的值,这时候值已经变了。所以想看到真实值,可以按照上面说的直接输出esObj.extension[0]
2021-02-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

老师 你好 有个疑问?想请教您一下。

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