Javascript中的多变量赋值
Multivariable Assignment in Javascript
有人能解释为什么如果我向foo添加一个属性,那么当我这样做时,bar也会继承该属性吗:
var foo = bar = {};
foo.hi = 'hi';
console.log(bar); //Object {hi: "hi"}
这是怎么回事?我正在设置foo的属性,而不是bar。我意识到我把对象传给了bar,然后又把bar传给了foo,但这里一定遗漏了什么。
整数赋值的工作方式不同,更有意义(对我来说):
var foo = bar = 5;
foo = 4;
console.log(bar); // 5
对象在JavaScript中通过引用传递。字符串和数字文字不是。在您的代码foo === bar
中,是同一个对象。您可以简单地单独声明变量:
// Two different object instances
var foo = {};
var baz = {};
通过执行foo = bar = {};
,foo和bar是指向同一对象的指针。所以当你这样做的时候:
foo.hi = 'hi';
它还设置了bar.hi
,因为foo
和bar
指向同一个对象。为了让它与众不同,你应该做:
var foo = {}, bar = {};
foo.hi = 'hi';
相关文章:
- Javascript变量赋值|
- 如何在javascript中为全局变量赋值
- 我可以在javascript中的回调函数中为变量赋值吗
- JavaScript 变量赋值的行为令人惊讶
- 为什么 Javascript 在变量赋值时将 null 转换为字符串
- JavaScript: 变量赋值 in for 语句 |在前面或里面
- 我可以将变量赋值为数组值吗?
- 变量赋值无效
- 一行中的多个变量赋值
- Javascript中的多变量赋值
- 如何根据 IF 句子和警报为变量赋值?.JS
- 无法为变量赋值 - Javascript
- 为所有以特定字符串开头的变量赋值
- Javascript中多变量赋值的正确方法
- 条件变量赋值的最佳方法
- 在 JavaScript 中是否有一个严格等价的 ||在变量赋值中使用时
- 在 JavaScript 中,未声明的变量赋值可以在函数范围之外访问
- 使用Javascript,变量赋值上下文中的表达式与上下文外的表达式有什么区别
- JavaScript 变量赋值
- 当我为 PHP 变量赋值时,是否可以调用 JavaScript 函数