国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一道前端JS題目

2json / 3313人閱讀

摘要:返回值對(duì)象指代的是調(diào)用這個(gè)函數(shù)的對(duì)象,在這里相當(dāng)于,則相當(dāng)于而的已經(jīng)被賦值為,所以結(jié)果就為。

做過很多前端筆試題,有些題看起來簡(jiǎn)單,就是讀程序?qū)懡Y(jié)果,但要么做錯(cuò),要么對(duì)答案不確定,這里找到一道比較綜合的題目

function Foo() {  //定義了一個(gè)名叫Foo的函數(shù)
    getName = function () { alert (1); };   //(1)函數(shù)內(nèi)定義了一個(gè)函數(shù)變量
    return this;
}     
Foo.getName = function () { alert (2);};  //(2)創(chuàng)建了Foo的靜態(tài)屬性
Foo.prototype.getName = function () { alert (3);};  //(3)定義了Foo函數(shù)原型對(duì)象上的getName函數(shù)
var getName = function () { alert (4);};  //(4)通過函數(shù)變量表達(dá)式定義了一個(gè)叫g(shù)etName的函數(shù)
function getName() { alert (5);}   //(5)聲明了一個(gè)getName函數(shù)

//請(qǐng)寫出以下輸出結(jié)果:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();

第一題:

Foo.getName(); //2
Foo.getName; // function(){alert(2);}

這道題比較簡(jiǎn)單,F(xiàn)oo函數(shù)上的getName函數(shù),執(zhí)行的是第(2)句

第二題:

getName(); //4

我多次做這道題都會(huì)認(rèn)為答案是5,其實(shí)不然。
因?yàn)?strong>變量聲明提升,所以(4)拆分成兩句,var getName; getName = function(){alert(3);}
其中var getName函數(shù)表達(dá)式被提升,但getName = function(){alert(3);}則不提升,(5)函數(shù)聲明function getName同樣提升,結(jié)果順序就變?yōu)?/p>

function Foo() {  
    getName = function () { alert (1); };   
    return this;
}
var getName;  //變量聲明提升
function getName () {alert(5);};     //變量聲明提升,getName()的結(jié)果為alert(5)
Foo.getName = function () { alert (2);}; 
Foo.prototype.getName = function () { alert (3);};  
getName = function () { alert (4);};   //覆蓋了getName()的結(jié)果

因此,getName()的結(jié)果為4.

第三題

Foo().getName(); //1

先執(zhí)行Foo()函數(shù),再調(diào)用其返回值對(duì)象的getName屬性函數(shù)。
(1)句沒有var聲明,就先在Foo()里尋找getName聲明,沒有找到,就在外層作用域中尋找,在第(4)句找到了var getName,將此變量的值賦值為function(){alert(1);}
Foo()返回值對(duì)象this指代的是調(diào)用這個(gè)函數(shù)的對(duì)象,在這里相當(dāng)于window,則Foo().getName()相當(dāng)于window.getName(),而windowgetName()已經(jīng)被賦值為function(){alert(1);},所以結(jié)果就為1。

Foo.getNameFoo().getName的區(qū)別

function Foo(){
    var getName = "Zoe";
}
Foo.getName; //undefined
Foo().getName; //"Zoe"

第四題

getName(); //相當(dāng)于調(diào)用window.getName(),結(jié)果為1

第五題

new Foo.getName(); //2

成員訪問運(yùn)算符(.)的優(yōu)先級(jí)大于new,小括號(hào)()的優(yōu)先級(jí)又大于(.)
所以問題改寫成

new (Foo.getName)();相當(dāng)于把getName當(dāng)做構(gòu)造函數(shù)在執(zhí)行

第六題

new Foo().getName(); //3

同樣因?yàn)閮?yōu)先級(jí),改寫成

(new Foo()).getName();

var f = Foo();
f.getName();

首先構(gòu)建了一個(gè)Foo函數(shù)的實(shí)例化對(duì)象,再調(diào)用對(duì)象的getName屬性,由于Foo構(gòu)造函數(shù)沒有添加getName屬性,所以向上查找到原型對(duì)象,即(3)句,得到結(jié)果3
我犯過的一個(gè)錯(cuò)誤,將(1)看成Foo函數(shù)的屬性,其實(shí)不是的,那只是函數(shù)體內(nèi)的一個(gè)變量,只能在函數(shù)體內(nèi)訪問,如果要表示函數(shù)屬性,需要寫成this.getName

第七題

new new Foo().getName(); //3

改寫成

new ((new Foo()).getName)();

var f = new Foo();  
var x = f.getName;
new x(); 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/80483.html

相關(guān)文章

  • 由淺入深的前端面試題 和矯情的“浪漫主義”詩句

    摘要:好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩歌說起。這一星期陸陸續(xù)續(xù)面試了不少于個(gè)人,其中不乏工作履歷突出的候選者。這樣做的問題在于循環(huán)并沒有要求枚舉對(duì)象的修改與當(dāng)前循環(huán)保持一致。 好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩歌說起。 傳統(tǒng)的佛學(xué)經(jīng)典里,被世人熟知的有這樣一句話:一花一世...

    JerryZou 評(píng)論0 收藏0
  • 由淺入深的前端面試題 和矯情的“浪漫主義”詩句

    摘要:好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩歌說起。這一星期陸陸續(xù)續(xù)面試了不少于個(gè)人,其中不乏工作履歷突出的候選者。這樣做的問題在于循環(huán)并沒有要求枚舉對(duì)象的修改與當(dāng)前循環(huán)保持一致。 好吧,我承認(rèn)太標(biāo)題黨了,這篇文章是通過一道前端面試題引出的純技術(shù)討論。我先要矯情無比的從中外詩歌說起。 傳統(tǒng)的佛學(xué)經(jīng)典里,被世人熟知的有這樣一句話:一花一世...

    lk20150415 評(píng)論0 收藏0
  • 面試完前端工程師被打擊,回來補(bǔ)一下

    摘要:去公司面試前端,給了一套題,一看,大體上不會(huì),跟面試官說這題對(duì)我有些難,他說這是基礎(chǔ),你可以走了,于是我走了。回來查了才知道原來數(shù)組就有方法。一查我再掩面而泣,原來里就帶了就可以干這活。 去XX公司面試前端,給了一套題,一看,大體上不會(huì),跟面試官說這題對(duì)我有些難,他說這是基礎(chǔ),你可以走了,于是我走了。人艱不拆啊。 但是作為一個(gè)知錯(cuò)就改的好少年,我要發(fā)揚(yáng)不懂就問,不懂就去研究的優(yōu)良傳統(tǒng)...

    hosition 評(píng)論0 收藏0
  • 一道前端面試題引發(fā)的思考

    摘要:直接開始題目是厲害了說句實(shí)話開發(fā)中誰寫成這樣保證會(huì)被打死。不過面試就是面試,有面試官的考量點(diǎn)。官方是這么說的。結(jié)果完美,不過小姐姐的意思是數(shù)組的方法會(huì)自動(dòng)觸發(fā)數(shù)組的。 直接開始題目是 if(a==1 && a==2 && a==3){ alert(厲害了) } 說句實(shí)話開發(fā)中誰寫成這樣保證會(huì)被打死。 不過面試就是面試,有面試官的考量點(diǎn)。 我理解的點(diǎn)有兩個(gè) 1、隱式類型轉(zhuǎn)換 先說...

    gaomysion 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<