Heim  >  Artikel  >  Web-Frontend  >  Klassischer Fall einer kontinuierlichen Zuweisung in js

Klassischer Fall einer kontinuierlichen Zuweisung in js

零下一度
零下一度Original
2017-07-21 17:36:061518Durchsuche

Heute bin ich auf einen klassischen Fall von kontinuierlicher Zuweisung gestoßen. Auch die Antworten der Internetnutzer sind unterschiedlich, was mir etwas umständlich erscheint.

Um auf Anfänger einzugehen, habe ich die einfachsten, leicht verständlichen und sogar etwas ausführlichen Worte verwendet, um mein Verständnis dieses Falles zu erklären. Es ist eigentlich nicht schwierig.

Das Folgende ist dieser klassische Fall:

<span style="font-size: 14px"><span style="color: #0000ff">var</span> a = {n: 1<span style="color: #000000">};</span><span style="color: #0000ff">var</span> b =<span style="color: #000000"> a;
a.x </span>= a = {n: 2<span style="color: #000000">};<br>console.log(a);<br>console.log(b);
console.log(a.x);
console.log(b.x); <br></span></span>

Lassen Sie uns einen Blick darauf werfen 1. Gewöhnliche kontinuierliche Zuweisung, das heißt: Der Typ der Variablenzuweisung ist der Datentypwert

    var a=3;var b=a=5;
    console.log(a);
    console.log(b);

  Im Allgemeinen ist die Richtung der Gleichheitszeichenzuweisung von rechts nach linksDann entspricht der obige Code dem folgenden Code, dann verwenden wir den folgenden Code, um den obigen Code zu erklären:

<span style="font-size: 14px">    <span style="color: #0000ff">var</span> a=3<span style="color: #000000">;  //全局变量a被赋值为3</span><span style="color: #0000ff">var</span> a=5<span style="color: #000000">;  //此时a被重新赋值为5</span><span style="color: #0000ff">var</span> b=<span style="color: #000000">a;  //将a的值赋给全局变量b<br></span></span>
<span style="font-size: 14px">  console.log(a);//a最终的值就是第二次被赋的值:5<br>  console.log(b);//按照代码执行顺序b的值也是:5</span>

 Der obige kleine Fall wird verwendet, um neue Ideen vorzustellen. Lassen Sie uns nun diesen klassischen Fall analysieren:

<span style="font-size: 14px"><span style="color: #0000ff">var</span> a = {n: 1<span style="color: #000000">};//a第一次被赋值,是一个引用类型值,请记得变量赋值为引用类型值的时候,通过变量改变这个对象的时候,对象本身也发生了变化</span><span style="color: #0000ff">var</span> b =<span style="color: #000000"> a;//b被赋值为a,因此b就是对象{n:1}<br>a.x </span>= a = {n: 2</span><span style="color: #000000"><span style="font-size: 14px">};</span><br><span style="font-size: 14px">//这个赋值与之前的简单案例有所不同,a.x指的是给a添加一个x属性,在js的运算中“.”和"="运算符同时出现,会先执行"."运算</span><br><span style="font-size: 14px">//因此,赋值顺序被改变了,是先给a.x赋值,再给a赋值</span><br><span style="font-size: 14px">//就是先执行:a.x={n:2},注意这里a并未改变,是给a的x属性赋值为{n:2},a还是{n:1}<br>//再回到我代码中的第一句话,这个赋值行为,改变了{n:1}这个对象,即给它增加了名为x的属性</span><br><span style="font-size: 14px">//再执行a={n:2},这是变量a不再是对象{n:1},而被重新赋值为一个新的对象{n:2};

console.log(a);//自然此时a是对象{n:2}</span><br><span style="font-size: 14px">console.log(b);//a的二次赋值,并没有影响b,b还是对象{n:1},但是由于a在重新赋值之前,给{n:1}这个对象,增加了一个x属性,因此,这时的b已经有了x属性
console.log(a.x);//{n:2}对象没有x属性,所以结果是undefined
console.log(b.x);//综上所述,这个结果是{n:2}  </span> </span>

Verstehen Sie?

Das obige ist der detaillierte Inhalt vonKlassischer Fall einer kontinuierlichen Zuweisung in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn