真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

好程序員Java教程分享JavaScript常見面試題五

 好程序員Java教程分享JavaScript常見面試題五

綏濱網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),綏濱網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為綏濱近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的綏濱做網(wǎng)站的公司定做!

?

 1、以下代碼行將輸出什么到控制臺(tái)?

?

 console.log("0||1="+(0||1));console.log("1||2="+(1||2));console.log("0&&1="+(0&&1));console.log("1&&2="+(1&&2));

?

 并解釋。

?

 該代碼將輸出:

?

 0||1=11||2=10&&1=01&&2=2

?

 在JavaScript中,||和&&都是邏輯運(yùn)算符,用于在從左至右計(jì)算時(shí),返回第一個(gè)可完全確定的“邏輯值”。

?

 或(||)運(yùn)算符。在形如X||Y的表達(dá)式中,首先計(jì)算X并將其解釋執(zhí)行為一個(gè)布爾值。如果這個(gè)布爾值true,那么返回true(1),不再計(jì)算Y,因?yàn)椤盎颉钡臈l件已經(jīng)滿足。如果這個(gè)布爾值為false,那么我們?nèi)匀徊荒苤繶||Y是真是假,直到我們計(jì)算Y,并且也把它解釋執(zhí)行為一個(gè)布爾值。

?

 因此,0||1的計(jì)算結(jié)果為true(1),同理計(jì)算1||2。

?

 與(&&)運(yùn)算符。在形如X&&Y的表達(dá)式中,首先計(jì)算X并將其解釋執(zhí)行為一個(gè)布爾值。如果這個(gè)布爾值為false,那么返回false(0),不再計(jì)算Y,因?yàn)椤芭c”的條件已經(jīng)失敗。如果這個(gè)布爾值為true,但是,我們?nèi)匀徊恢繶&&Y是真是假,直到我們?nèi)ビ?jì)算Y,并且也把它解釋執(zhí)行為一個(gè)布爾值。

?

 不過(guò),關(guān)于&&運(yùn)算符有趣的地方在于,當(dāng)一個(gè)表達(dá)式計(jì)算為“true”的時(shí)候,那么就返回表達(dá)式本身。這很好,雖然它在邏輯表達(dá)式方面計(jì)算為“真”,但如果你希望的話也可用于返回該值。這就解釋了為什么,有些令人奇怪的是,1&&2返回2(而不是你以為的可能返回true或1)。

?

 2、執(zhí)行下面的代碼時(shí)將輸出什么?請(qǐng)解釋。

?

 console.log(false=='0')console.log(false==='0')

?

 代碼將輸出:

?

 truefalse

?

 在JavaScript中,有兩種等式運(yùn)算符。三個(gè)等于運(yùn)算符===的作用類似傳統(tǒng)的等于運(yùn)算符:如果兩側(cè)的表達(dá)式有著相同的類型和相同的值,那么計(jì)算結(jié)果為true。而雙等于運(yùn)算符,會(huì)只強(qiáng)制比較它們的值。因此,總體上而言,使用===而不是==的做法更好。!==vs!=亦是同理。

?

 3、以下代碼將輸出什么?并解釋你的答案。

?

 vara={},

?

 b={key:'b'},c={key:'c'};

?

 a=123;

?

 a[c]=456;

?

 console.log(a);

?

 這段代碼將輸出456(而不是123)。

?

 原因?yàn)椋寒?dāng)設(shè)置對(duì)象屬性時(shí),JavaScript會(huì)暗中字符串化參數(shù)值。在這種情況下,由于b和c都是對(duì)象,因此它們都將被轉(zhuǎn)換為"[objectObject]"。結(jié)果就是,a和a[c]均相當(dāng)于a["[objectObject]"],并可以互換使用。因此,設(shè)置或引用a[c]和設(shè)置或引用a完全相同。

?

 4、以下代碼行將輸出什么到控制臺(tái)?

?

 console.log((functionf(n){return((n>1)?n*f(n-1):n)})(10));

?

 并解釋你的答案。

?

 代碼將輸出10!的值(即10!或3628800)。

?

 原因是:

?

 命名函數(shù)f()遞歸地調(diào)用本身,當(dāng)調(diào)用f(1)的時(shí)候,只簡(jiǎn)單地返回1。下面就是它的調(diào)用過(guò)程:

?

 f(1):returnsn,whichis1f(2):returns2*f(1),whichis2f(3):returns3*f(2),whichis6f(4):returns4*f(3),whichis24f(5):returns5*f(4),whichis120f(6):returns6*f(5),whichis720f(7):returns7*f(6),whichis5040f(8):returns8*f(7),whichis40320f(9):returns9*f(8),whichis362880f(10):returns10*f(9),whichis3628800

?

 5、請(qǐng)看下面的代碼段??刂婆_(tái)將輸出什么,為什么?

?

 (function(x){return(function(y){console.log(x);

?

 })(2)

?

 })(1);

?

 控制臺(tái)將輸出1,即使從來(lái)沒(méi)有在函數(shù)內(nèi)部設(shè)置過(guò)x的值。原因是:

?

 閉包是一個(gè)函數(shù),連同在閉包創(chuàng)建的時(shí)候,其范圍內(nèi)的所有變量或函數(shù)一起。在JavaScript中,閉包是作為一個(gè)“內(nèi)部函數(shù)”實(shí)施的:即,另一個(gè)函數(shù)主體內(nèi)定義的函數(shù)。閉包的一個(gè)重要特征是,內(nèi)部函數(shù)仍然有權(quán)訪問(wèn)外部函數(shù)的變量。

?

 因此,在本例中,由于x未在函數(shù)內(nèi)部中定義,因此在外部函數(shù)范圍中搜索定義的變量x,且被發(fā)現(xiàn)具有1的值。

?

 6、下面的代碼將輸出什么到控制臺(tái),為什么:

?

 varhero={

?

 _name:'JohnDoe',

?

 getSecretIdentity:function(){returnthis._name;

?

 }

?

 };varstoleSecretIdentity=hero.getSecretIdentity;console.log(stoleSecretIdentity());console.log(hero.getSecretIdentity());

?

 代碼有什么問(wèn)題,以及應(yīng)該如何修復(fù)。

?

 代碼將輸出:

?

 undefinedJohnDoe

?

 第一個(gè)console.log之所以輸出undefined,是因?yàn)槲覀冋趶膆ero對(duì)象提取方法,所以調(diào)用了全局上下文中(即窗口對(duì)象)的stoleSecretIdentity(),而在此全局上下文中,_name屬性不存在。

?

 其中一種修復(fù)stoleSecretIdentity()函數(shù)的方法如下:

?

 varstoleSecretIdentity=hero.getSecretIdentity.bind(hero);

?

 7、創(chuàng)建一個(gè)給定頁(yè)面上的一個(gè)DOM元素,就會(huì)去訪問(wèn)元素本身及其所有子元素(不只是它的直接子元素)的函數(shù)。對(duì)于每個(gè)被訪問(wèn)的元素,函數(shù)應(yīng)該傳遞元素到提供的回調(diào)函數(shù)。

?

 此函數(shù)的參數(shù)為:

?

 DOM元素

?

 回調(diào)函數(shù)(將DOM元素作為其參數(shù))

?

 訪問(wèn)樹(DOM)的所有元素是經(jīng)典的深度優(yōu)先搜索算法應(yīng)用。下面是一個(gè)示范的解決方案:

?

 functionTraverse(p_element,p_callback){

?

 p_callback(p_element);varlist=p_element.children;for(vari=0;i

?

 Traverse(list,p_callback);//recursivecall

?

 }

?

 }


網(wǎng)站名稱:好程序員Java教程分享JavaScript常見面試題五
分享地址:http://weahome.cn/article/jeogso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部