欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript面試題(指針、帽子和女朋友)

 更新時間:2016年11月23日 15:57:25   作者:我叫blue  
本文小編給大家分享一道js面試題--指針、帽子和女朋友的題目,非常有意思,感興趣的朋友參考下吧

首先,事情開始于一道面試題

<script>
function A(){
this.name="";
this.age=18;
}
var a1=new A();
a1.name="尼古拉斯·屌";
var a2=a1;
a2.name="blue";
console.log(a1.name); //變成blue了
var str1="尼古拉斯·屌";
var str2=str1;
str2="blue";
console.log(str1); //沒變,還是尼古拉斯·屌
</script>
簡單來說
a2=a1;
a2.name=xxx; //a1.name會變
str2=str1;
str2=xxx; //str1不會變

歡迎覺得廢話太多的同學直接翻到最后看“技術(shù)流解釋”哈,那么我們開始

套用一句比較俗的話:“道理我都懂,可是為什么字符串就不會變呢”,JavaScript作為高級語言并沒有指針的概念,但卻又總被這事兒困擾,今天我就想試試讓大家理解這個概念,如果要弄明白這個事情,請先來弄明白一個特別簡單的事情:

假設(shè)你有女朋友叫夢琪,喜歡帶黃色帽子,你幫她買了頂紅色帽子,請問:夢琪帶什么顏色的帽?

答:紅色

假設(shè)你有女朋友叫夢琪,喜歡帶黃色帽子,你直接換了個喜歡帶紅色帽子的女朋友,請問:夢琪帶什么顏色的帽子?

答:還是黃色,沒變

如果我們理解了上面這個花心蘿卜和戴帽子的女朋友的問題,那么問題就變得非常簡單,用代碼再表示一遍:

//情況1:換帽子
你.女朋友=夢琪;
你.女朋友.帽子=紅色;
console.log(夢琪.帽子); //紅色
//情況2:換女朋友
你.女朋友=夢琪;
你.女朋友=安易;
console.log(夢琪.帽子); //黃色,沒變

簡單來說,你換女朋友了,關(guān)人家帽子啥事,對吧

為了徹底弄明白問題的步驟1/2:

讓我們把這個本就混亂的關(guān)系搞得更亂一些吧[捂臉]

假設(shè)張三和李四,都找了同一個女朋友,張三給她買了一頂帽子,請問:李四的女朋友換帽子了沒?

答:換了

假設(shè)張三和李四,都找了同一個女朋友,張三扛不住了,又新找了個女朋友,請問:這跟李四女朋友的帽子有關(guān)系嗎?

答:有毛關(guān)系啊

上面這個混亂的關(guān)系,用程序表述出來就是:

//情況1.換帽子
張三女朋友=李四女朋友; //傳說中的引用:第一次見到能把出軌說的這么清新脫俗的
張三女朋友.帽子=綠色的帽子;
console.log(李四女朋友.帽子); //變了,綠的
//情況2.跟帽子有毛關(guān)系
張三女朋友=李四女朋友;
張三女朋友=新的女朋友;
console.log(李四女朋友.帽子); //不知道什么顏色,反正沒變

為了徹底弄明白問題的步驟2/2:

直接上代碼了,解釋見注釋哈

//情況1:帽子
var 張三女朋友=new 女朋友(); //太方便了有沒有
var 李四女朋友=張三女朋友; //又引用了
張三女朋友.帽子=紅的;
console.log(李四女朋友.帽子); //紅的,變了
//情況2:跟帽子有毛關(guān)系
var 張三女朋友=new 女朋友();
var 李四女朋友=張三女朋友;
張三女朋友=另一個;
console.log(李四女朋友.帽子); //沒變,跟帽子有毛關(guān)系

所以,現(xiàn)在請跟隨我再來重新看一遍上面的問題

//情況1
var a1=new A();
var a2=a1;
//注意:在這個時候,a1和a2就是同一個東西,引用嘛,你懂的
a2.name="blue"; //你給女朋友,買了頂新的帽子
console.log(a1.name); //她的帽子是Blue色的
//情況2
var str1="aaa";
var str2=str1;
//注意:這個時候,str1和str2也是同一個東西,也是引用
str2="blue"; //你直接換了個女朋友
console.log(str1); //你原先女朋友沒啥變化

人上了年紀就會很啰嗦,直接上圖多好:

情況1:a2.name="blue"

情況2:str2="blue"

==========================純技術(shù)流分隔線==========================

1.指針:代表一個變量或?qū)傩灾赶蛘l

2.賦值:代表改變變量或?qū)傩缘闹赶?/p>

合起來用:

a1=a2;
a2.name='blue';
//改變a2.name指向了'blue';但a1和a2依然指向同一個對象,所以:a1.name=>'blue'
str1=str2;
str2='blue';
//改變str2指向了'blue';這時str1和str2不再指向同一對象,所以:str1不變

以上所述是小編給大家介紹的JavaScript面試題(指針、帽子和女朋友),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 如何用JavaScript實現(xiàn)一個數(shù)組惰性求值庫

    如何用JavaScript實現(xiàn)一個數(shù)組惰性求值庫

    這篇文章主要介紹了如何用JavaScript實現(xiàn)一個數(shù)組惰性求值庫,對惰性求值感興趣的同學,可以參考下
    2021-05-05
  • 前臺js調(diào)用后臺方法示例

    前臺js調(diào)用后臺方法示例

    本文為大家介紹下前臺js調(diào)用后臺方法,下面有個不錯的示例,喜歡的朋友可以參考下
    2013-12-12
  • 玩轉(zhuǎn)JavaScript函數(shù):apply/call/bind技巧

    玩轉(zhuǎn)JavaScript函數(shù):apply/call/bind技巧

    歡迎來到這篇關(guān)于JavaScript中apply、call、bind函數(shù)的指南,這里充滿了實用技巧和深入理解,讓你的編程之旅更加游刃有余,趕快翻開這個神秘的“魔法書”,讓我們一起探索吧!
    2024-01-01
  • 使用cookie繞過驗證碼登錄的實現(xiàn)代碼

    使用cookie繞過驗證碼登錄的實現(xiàn)代碼

    本文通過實例代碼給大家詳細介紹了使用cookie繞過驗證碼登錄的實現(xiàn)方法,需要的朋友參考下吧
    2017-10-10
  • Javascript中for循環(huán)語句的幾種寫法總結(jié)對比

    Javascript中for循環(huán)語句的幾種寫法總結(jié)對比

    如果您希望一遍又一遍地運行相同的代碼,并且每次的值都不同,那么使用循環(huán)是很方便的,javascript中for循環(huán)也是非常常用的,下面這篇文章主要介紹了Javascript中for循環(huán)的幾種寫法,需要的朋友可以參考借鑒,一起來看看吧。
    2017-01-01
  • 微信小程序進行微信支付的步驟昂述

    微信小程序進行微信支付的步驟昂述

    最近開發(fā)微信小程序進入到支付階段,一直以來從事App開發(fā),所以支付流程還是熟記于心的。下面通過本文給大家講述下微信小程序進行微信支付的步驟,需要的朋友可以參考下
    2016-12-12
  • JavaScript之filter_動力節(jié)點Java學院整理

    JavaScript之filter_動力節(jié)點Java學院整理

    filter也是一個常用的操作,它用于把Array的某些元素過濾掉,然后返回剩下的元素。下面通過實例代碼給大家簡答介紹下javascript中的filter,需要的的朋友參考下吧
    2017-06-06
  • javascript移動端 電子書 翻頁效果實現(xiàn)代碼

    javascript移動端 電子書 翻頁效果實現(xiàn)代碼

    這篇文章主要介紹了javascript移動端 電子書 翻頁效果實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • 如何在TypeScript中處理日期字符串

    如何在TypeScript中處理日期字符串

    這篇文章主要介紹了如何在TypeScript中處理日期字符串,主要通過輸入日期字符串來改善開發(fā)者的體驗并減少潛在的錯誤,下文實現(xiàn)操作的分享需要的小伙伴可以參考一下
    2022-04-04
  • js程序中美元符號$是什么

    js程序中美元符號$是什么

    $符號在php中是表示變量的特征字符, 在js中它也有很多作用, 一般我們用來命名一個函數(shù)名稱,獲取id的
    2008-06-06

最新評論