오늘은 전형적인 연속과제 사례를 접했는데, 네티즌들의 답변도 다양해서 좀 번거로운 것 같더라구요.
초보자를 배려하기 위해 가장 간단하고 이해하기 쉬우며 다소 장황한 단어를 사용하여 이 사건에 대한 이해를 설명했습니다. 실제로 어렵지 않습니다.
다음은 이 고전적인 사례입니다.
<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>
먼저 일반적인 연속 할당을 살펴보겠습니다. 즉, 변수 할당 유형은 데이터 유형 값입니다.
var a=3;var b=a=5; console.log(a); console.log(b);
말하기 , etc. 번호 할당 방향은 오른쪽에서 왼쪽입니다. 그러면 위 코드는 다음 코드와 동일하며 다음 코드를 사용하여 위 코드를 설명합니다.
<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>
위의 작은 case is Used 이것부터 시작해 보겠습니다. 이제 이 고전적인 사례를 분석해 보겠습니다.
<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>
이해하셨는지 궁금합니다.
위 내용은 js에서 연속 할당의 전형적인 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!