Heim  >  Fragen und Antworten  >  Hauptteil

javascript – Ein Problem bei der Zuweisungsoperation

var a=0;
b=(a=3)+(a=4);
alert(a);
alert(b);
Ergebnis a=4,b=7

Ich würde gerne fragen, warum eine 4 ist? Ist die Zuordnung von rechts nach links?

phpcn_u1582phpcn_u15822672 Tage vor804

Antworte allen(5)Ich werde antworten

  • 仅有的幸福

    仅有的幸福2017-06-26 10:57:04

    运算顺序:

    var a = 0; // a 0
    b = (a = 3) + (a = 4);
    // a = 3 ----> a为3,整个赋值语句返回3
    // a = 4 ----> a为4,整个赋值语句返回4
    // 由于返回值的内存和赋值操作用到的a的内存不同,所以b的运算所用的值,只和返回值有关,不受a的值变化的影响,因此,b = 3 + 4 = 7
    // 所以,最终a为4,b为7

    Antwort
    0
  • 怪我咯

    怪我咯2017-06-26 10:57:04

    赋值运算是自右向左结合的。所以首先是将(a=3)+(a=4)赋值给b。然而(a=3)+(a=4)是从左到右的顺序执行的。所以显示3赋值给a,然后4赋值给a。所以a最终为4,b最终为7。

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-06-26 10:57:04

    先执行a=3,接着执行a=4, 所以最后a是4

    Antwort
    0
  • 黄舟

    黄舟2017-06-26 10:57:04

    a被4赋值了

    Antwort
    0
  • PHP中文网

    PHP中文网2017-06-26 10:57:04

    b=(a=3)+(a=4)这行代码时从左向右执行的
    执行a=3时,此时将3赋值给a 当a=4时,将4赋值给a,最后a的值就是4了.

    Antwort
    0
  • StornierenAntwort