javascript連續賦值問題,javascript賦值

來源:互聯網
上載者:User

javascript連續賦值問題,javascript賦值

前幾天在搜尋面試題時發現了這麼一段代碼,執行完後感覺完全不與所想的一樣

 var a = {   n : 1 }; var b = a; a.x = a = {n : 2}; console.log(a.x); console.log(b.x);

輸出結果為:

undefined

[object Object]

一開始以為語句應該是先給 a 賦值 {n : 2} , 然後再將 a.x 賦值 {n : 2} ;

但事實卻不是那樣,於是改動了一下代碼,添加幾條log

var test;var a = {  get test () {    console.log("call a get");    return test;  },  set test (value) {    console.log("call a set");    test = value;  }}var test2;var b = {  get test2 () {    console.log("call b get");    return test2;  },  set test2 (value) {    console.log("call b set");    test2 = value;  }}a.test = {  n : 1};b.test2 = a.test;console.log("begin");a.test.x = a.test = {n : 2};

這樣,在begin後邊,這條賦值到底執行了什麼就一目瞭然了.

這是語句執行時列印的log

先觸發了一次get,然後觸發了一次set.

本人猜想,該條語句執行的順序為,先將左邊變數取出,然後執行賦值.(在執行該條語句前,先將對象引用取出,然後從右至左執行賦值)


以上所述就是本文的全部內容了,希望大家能夠喜歡

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.