美文网首页
js对象数组赋值的灵异事件

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

作者: 就这个皂倍儿爽 | 来源:发表于2017-04-19 13:30 被阅读0次

写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,所以同样遵循这个规则。

相关文章

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

    写js时,碰到一个奇怪的bug。将变量foo的值赋给变量bar后,改变bar也会改变foo。 简单研究过后,这种情...

  • ECMAScript6 -- 解构赋值

    解构赋值 数组的解构赋值 对象的解构赋值 特殊: 数组的解构赋值 如果右边不是数组,默认转换为类数组 对象的解构赋...

  • JS基础:ES6关于基本语法的一些扩展

    目录一. 解构赋值 1. 数组的解构赋值 2. JS对象的解构赋值 3. 解构赋值的应用场景二. 字符串的扩展 1...

  • 字符串、解构赋值

    字符串 解构赋值 数组的结构赋值 对象的解构赋值 伪数组变真数组方法

  • ES6常用新特性3--解构赋值

    对象的解构赋值 数组的解构赋值

  • es6-解构赋值

    什么是解构赋值 左右一一对应进行赋值。 解构赋值的分类 数组解构赋值,左右都是数组 对象解构赋值,左右都是对象 字...

  • JS数组与对象赋值问题

    最近有群友遇到一个问题 就是给数组赋值遇到的一些问题 正好自己也不了解 就去网上查了一些资料 在这里做一下总结 问...

  • js的对象和数组深拷贝

    在js的应用中,对象和数组的拷贝是经常出现的情况,由于其是引用传递,直接赋值,可能导致原始对象或数组被无意的修改 ...

  • 变量的解构赋值

    本文通过学习阮一峰的博客,外加自己的理解,整理了一下我对js变量的解构赋值的理解。 数组的解构赋值 对象的解构赋值...

  • ES6变量的结构赋值19-10-16

    1.理解:从对象或数组中提取数据,并赋值给变量(多个) 1.对象的结构赋值 2.数组的结构赋值

网友评论

      本文标题:js对象数组赋值的灵异事件

      本文链接:https://www.haomeiwen.com/subject/zsnczttx.html