js对象数组赋值的灵异事件

写js时,碰到一个奇怪的bug。将变量foo的值赋给变量bar后,改变bar也会改变foo。

简单研究过后,这种情况只是在改变object和array时发生。

var foo = {key: 'foo'}
var bar = foo   // bar => {key: 'foo'}
bar.key = 'bar'  // 改变bar这个对象
bar  // => {key: 'bar'} 
foo  // => {key: 'bar'} foo竟然也被改变了

// go on
bar = 'change it to a string'
bar  // => 'change it to a string'
foo // {key: 'bar'} 这回foo不变
结论:

js中不同变量存储的object并没有在内存中存储多份,而只将变量名(foo,bar)当成是对该对象的引用。array也能看成object,所以同样遵循这个规则。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容