說(shuō)不完的JavaScript作用域

昨天在作某廠的筆試題霎烙,答的一塌糊涂,感覺(jué)很熟悉赡茸,卻又說(shuō)不出正確答案谓着,還是因?yàn)槠綍r(shí)真正深刻理解的東西太少,關(guān)于js的作用域問(wèn)題是個(gè)永遠(yuǎn)都說(shuō)不完的話題坛掠,昨天就遇到了赊锚。題目大概如下:


var user = {
    name: "jack",
    getname: function(){
        return this.name;
    }
};

var obj = user.getname;
console.log(obj()); 
console.log(user.getname()); 


問(wèn)題是:輸出結(jié)果是什么?

a. jack, jack;
b. jack, undefined;
c. undefined, jack;
d. undefined, undefined;
e. '', '';
f. '', jack;

相信大多數(shù)人在看js的作用域和作用域鏈這部分的時(shí)候都見(jiàn)過(guò)這個(gè)題屉栓,所以我就不假思索的選了d. undefined, undefined,事后自己敲了代碼才知道大錯(cuò)特錯(cuò)舷蒲。正確答案為:'', jack。我怎么都想不到的~~

所以今天就認(rèn)真的分析了一下友多,為什么會(huì)是這個(gè)結(jié)果呢牲平?

(1)輸出'' 的原因:

首先在對(duì)象user聲明結(jié)束后,定義了obj變量域滥,并初始化纵柿,var obj = user.getname;這個(gè)過(guò)程相當(dāng)于將getname()這個(gè)函數(shù)的指針賦給了obj變量,此時(shí)obj就相當(dāng)于:

var obj = function(){
    return this.name;
};

此時(shí)this指向window對(duì)象启绰,然后window有個(gè)name屬性昂儒,然而window.name并沒(méi)有賦值,此時(shí)就為' '委可。

(2)輸出jack的原因:

這個(gè)比較好理解渊跋,因?yàn)閡ser對(duì)象直接調(diào)用自己的方法,此時(shí)的this自然就是user本身,user自身有name屬性拾酝,所以就輸出了jack燕少。


總結(jié):好多時(shí)候不是問(wèn)題太難,而是我們從來(lái)不往深了想蒿囤,得過(guò)且過(guò)就會(huì)屢屢在同一個(gè)地方摔跟頭客们,寫這篇就是想讓自己長(zhǎng)記性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末材诽,一起剝皮案震驚了整個(gè)濱河市镶摘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岳守,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碌冶,死亡現(xiàn)場(chǎng)離奇詭異湿痢,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)扑庞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門譬重,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人罐氨,你說(shuō)我怎么就攤上這事臀规。” “怎么了栅隐?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵塔嬉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我租悄,道長(zhǎng)谨究,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任泣棋,我火速辦了婚禮胶哲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘潭辈。我一直安慰自己鸯屿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布把敢。 她就那樣靜靜地躺著寄摆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪修赞。 梳的紋絲不亂的頭發(fā)上冰肴,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼熙尉。 笑死联逻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的检痰。 我是一名探鬼主播包归,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼铅歼!你這毒婦竟也來(lái)了公壤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤椎椰,失蹤者是張志新(化名)和其女友劉穎厦幅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體慨飘,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡确憨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓤的。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休弃。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖圈膏,靈堂內(nèi)的尸體忽然破棺而出塔猾,到底是詐尸還是另有隱情,我是刑警寧澤稽坤,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布丈甸,位于F島的核電站,受9級(jí)特大地震影響尿褪,放射性物質(zhì)發(fā)生泄漏老虫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一茫多、第九天 我趴在偏房一處隱蔽的房頂上張望祈匙。 院中可真熱鬧,春花似錦天揖、人聲如沸夺欲。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)些阅。三九已至,卻和暖如春斑唬,著一層夾襖步出監(jiān)牢的瞬間市埋,已是汗流浹背黎泣。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缤谎,地道東北人抒倚。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像坷澡,于是被迫代替她去往敵國(guó)和親托呕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容