亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道關于對象賦值的js面試題

一道關于對象賦值的js面試題

婷婷同學_ 2019-02-09 23:23:30
  var a = { n : 1};    var b = a;    a.x = a = {n:  2};    alert(a.x);    alert(b.x);           輸出:undefined [object Object]請問:a.x = a = {n: 2}; 該句是如何賦值的?
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

其實這類問題很容易理解,只需要記得變量只是對象的引用,變量并不是對象本身。

  1. 取值的時候順著變量找到對象;

  2. 賦值的時候則改變變量的指向。

所以

  1. 對于 var a = {n: 1},想象一個對象 {n: 1} 放地上,用 a 指著它;

  2. var b = a 就是 b 順著 a 找到 {n: 1},兩者同時指著它;

  3. a.x = a = {n:2} 左往右看,

    1. a.x 是對 a 取值,順著 a 找到 {n: 1},再找到其 x 屬性等待賦值,

    2. 第二個 a 本應是取值,但右邊有 = 所以繼續變成了賦值操作,a 指向 {n:2}

    3. a = {n:2} 返回 {n:2},給了等待賦值的 {n: 1}.x

  4. alert(a.x),順著 a 找到 {n:2},因為在 3.2 中 a 改變了指向,而 {n: 2} 沒有 x 屬性;

  5. alert(b.x),順著 b 找到 {n: 1},{n: 1}在 3.1 得到了 x,順著 x 找到了 {n: 2}


查看完整回答
反對 回復 2019-02-12
  • 1 回答
  • 0 關注
  • 422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號