js實例教程-js連續賦值的基礎面試題題解

发布时间:2018-11-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js實例教程-js連續賦值的基礎面試題題解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小寶典致力於為廣大程序猿(媛)提供高品質的代碼服務,請大家多多光顧小站,小寶典在此謝過。

引子

今天同事聊天群里發現了一道面試題(js基礎),但答案基本沒有幾個能答對並且理解的很透徹的。

問題

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

先不說答案,可能有些人已經答錯了~

錯誤的答案

這多簡單!JS賦值運算右結合!那就分開算唄!

 a = {n: 2} a.x = a 

然後錯誤的答案就這麼產生了,a.x = {n: 2}

正解

其實這道題看似簡單但還是有一些繞,我依稀記得高中數學老師那句經典的口頭禪!

遇到難題:畫圖啊!

好吧,這句話可能我會受用一輩子,同時也送給看這篇文章的同學,希望能給你們編程帶來一些新的思路。

 var a = {n: 1};  var b = a; 

畫圖

這句話也是關鍵所在

 a.x=a= {n:2};

畫圖

根據js引擎語法解析,會先去從左到右尋找有沒有未聲明的變量,如果有就把該變量提升至作用域頂部並聲明該變量。那麼恭喜js引擎他找到a.x這個屬性沒有聲明,那麼他會在{n: 1}這個內存區聲明一個x屬性等待賦值!

語法解析完成後,開始進行運算(ps:賦值運算),首先將a變量的指針指向了一個新的內存區{n: 2},那麼a變量脫離了對內存區{n: 1}的引用關係。

但是此時{n:1 }這個內存區並沒有被GC回收因為b變量的指針依然指向它。並且因為之前就聲明了x屬性所以該內存區

增加了X屬性。那麼X屬性指向哪兒呢?a.x = a = {n: 2}它的返回值就是{n: 2}的內存區。

如下圖:

那麼根據圖上可得:

a.x 不存在,故: => undefined(ps:因為JS的缺陷這裡應當報個錯啥的~ Undefind reference)

b.x => {n: 2}

function func(){ var a =b =5;}相當於

 var b; function func() {    var a;    b = 5;    a = b; }

引子

今天同事聊天群里發現了一道面試題(js基礎),但答案基本沒有幾個能答對並且理解的很透徹的。

問題

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

先不說答案,可能有些人已經答錯了~

錯誤的答案

這多簡單!JS賦值運算右結合!那就分開算唄!

 a = {n: 2} a.x = a 

然後錯誤的答案就這麼產生了,a.x = {n: 2}

正解

其實這道題看似簡單但還是有一些繞,我依稀記得高中數學老師那句經典的口頭禪!

遇到難題:畫圖啊!

好吧,這句話可能我會受用一輩子,同時也送給看這篇文章的同學,希望能給你們編程帶來一些新的思路。

 var a = {n: 1};  var b = a; 

畫圖

這句話也是關鍵所在

 a.x=a= {n:2};

畫圖

根據js引擎語法解析,會先去從左到右尋找有沒有未聲明的變量,如果有就把該變量提升至作用域頂部並聲明該變量。那麼恭喜js引擎他找到a.x這個屬性沒有聲明,那麼他會在{n: 1}這個內存區聲明一個x屬性等待賦值!

語法解析完成後,開始進行運算(ps:賦值運算),首先將a變量的指針指向了一個新的內存區{n: 2},那麼a變量脫離了對內存區{n: 1}的引用關係。

但是此時{n:1 }這個內存區並沒有被GC回收因為b變量的指針依然指向它。並且因為之前就聲明了x屬性所以該內存區

增加了X屬性。那麼X屬性指向哪兒呢?a.x = a = {n: 2}它的返回值就是{n: 2}的內存區。

如下圖:

那麼根據圖上可得:

a.x 不存在,故: => undefined(ps:因為JS的缺陷這裡應當報個錯啥的~ Undefind reference)

b.x => {n: 2}

function func(){ var a =b =5;}相當於

 var b; function func() {    var a;    b = 5;    a = b; }

覺得可用,就經常來吧!Javascript技巧 腳本寶典 歡迎評論哦! js技巧,巧奪天工,精雕玉琢。小寶典獻醜了!

脚本宝典总结

以上是脚本宝典为你收集整理的js實例教程-js連續賦值的基礎面試題題解全部内容,希望文章能够帮你解决js實例教程-js連續賦值的基礎面試題題解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。