【问题标题】:What does this mean in Javascript?这在 Javascript 中是什么意思?
【发布时间】:2017-11-06 12:01:24
【问题描述】:

我注意到以下代码:

>  (123[45] = 67) == 67
<- true
>  123[45]
<- undefined

您也可以在浏览器中试用。

我不明白发生了什么。

123[45] 在第一个赋值指令中被视为一个数组,并且实际上正确地响应了下一个测试== 67。 但是,当我尝试访问内存位置 123[45] 时,我得到了 undefined。

那是什么?

【问题讨论】:

  • 不是“像一个数组”,而只是“像一个对象”。

标签: javascript arrays numbers compare variable-assignment


【解决方案1】:

Primitive values 不能有属性(这是它们与对象的区别)。有关该主题,另请参阅 Strings are not object then why do they have properties?Why can't I add properties to a string object in javascript?What’s happening in this code with Number objects holding properties and incrementing the number?

它实际上正确地响应了下一个测试== 67

不是属性访问,不。只是赋值表达式总是计算出它的右手边的值,不管赋值目标发生了什么。

你也可以用一个实际的对象来试试:

var x = {
  get p() { console.log("getting"); return 42; },
  set p(val) { console.log("setting "+val); }
};
x.p = 2; // setting 2
console.log(x.p); // getting 42
console.log((x.p = 67) == 67); // setting 67 true - no "getting"!
console.log(x.p); // still: getting 42

【讨论】:

    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 2019-02-03
    • 2015-07-15
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多