Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
今天這篇文章整理了幾道常見(jiàn)的Javascript筆試題,這些題目看似簡(jiǎn)單,但一不注意就會(huì)出錯(cuò),來(lái)看看你都會(huì)做嗎?
Javascript
我們都知道typeof是用于檢測(cè)一個(gè)變量的數(shù)據(jù)類(lèi)型的,instanceof是用于判斷某個(gè)變量是否是指定類(lèi)型的實(shí)例。
我們來(lái)看看下面的代碼。
題目1
在Javascript中Null作為一種單獨(dú)的數(shù)據(jù)類(lèi)型,其類(lèi)型只有一個(gè)值null。Null是一個(gè)特殊的Object類(lèi)型,因此在typeof null時(shí),返回的是‘object’。
既然typeof null返回的是object,那么null instanceof Object是不是就返回true呢?結(jié)果是否定的。
由于Null的特殊性,null值的產(chǎn)生并不是通過(guò)Object原型鏈的,通過(guò)Object類(lèi)型的原型鏈不能追溯到Null值,因此null instanceof Object返回值為false。
第二道題是reduce方法與Math.pow()方法結(jié)合,確定輸出結(jié)果,代碼如下。
題目2
首先我們來(lái)看看reduce方法的使用,它的API如下。
recude方法
接收一個(gè)回調(diào)函數(shù),對(duì)數(shù)組中的元素依次進(jìn)行處理,從參數(shù)名可以很容易看出previousValue為上一次計(jì)算結(jié)果的值,currentValue表示當(dāng)前處理值。
同時(shí)可選擇接收一個(gè)初始值initialValue,如果這個(gè)initialValue傳遞了,那么第一次調(diào)用回調(diào)函數(shù)時(shí)的previousValue就等于initialValue,如果沒(méi)有傳遞則previousValue就等于數(shù)組的第一個(gè)值。
理解上述的原則后,我們?cè)賮?lái)看看這道題目。
題目2中的回調(diào)函數(shù)是Math.pow(),Math.pow(a, b)表示的是a的b次方。其中a就是reduce回調(diào)函數(shù)的previousValue,b就是currentValue了。
在第一段代碼中,沒(méi)有傳遞initialValue,則previousValue為3,currentValue為2,那么計(jì)算后是Math.pow(3, 2)=9。
同理在第二次計(jì)算時(shí),previousValue為9,currentValue為1,則計(jì)算結(jié)果時(shí)Math.pow(9, 1)=9。
因此第一段代碼最終結(jié)果是9。
再來(lái)看看第二段代碼,不同于第一段的是它傳遞了initialValue為0,那么在進(jìn)行第一次計(jì)算時(shí),previousValue為0,currentValue為3,則第一次計(jì)算是Math.pow(0, 3)=0;
接下來(lái)進(jìn)行第二次計(jì)算,previousValue為上一次計(jì)算結(jié)果0,currentValue為2,則計(jì)算結(jié)果是Math.pow(0, 2)=0;
同理最后一次計(jì)算,previousValue為0,currentValue為1,計(jì)算結(jié)果是Math.pow(0, 1)=0;
因此第二段代碼最終結(jié)果是0。
第三道題考察的是Boolean與[0]的用法,代碼如下所示。
題目3
代碼首先定義了一個(gè)變量a,為只有一個(gè)元素0的數(shù)組。
然后通過(guò)if語(yǔ)句判斷[0]是否為true,進(jìn)而輸出不同的值。
這道題的核心在于if語(yǔ)句中的返回結(jié)果,需要注意的是,if語(yǔ)句的判斷結(jié)果實(shí)際是利用了Boolean的構(gòu)造方法,看看利用Boolean的構(gòu)造方法能否將if語(yǔ)句中的值轉(zhuǎn)化為true。
根據(jù)Boolean構(gòu)造方法的定義,如果邏輯對(duì)象無(wú)初始值或者其值為 0、-0、null、""、false、undefined 或者 NaN,Boolean構(gòu)造方法會(huì)返回false,否則返回true。
從題目中我們可以看出if語(yǔ)句中的值為[0],不滿(mǎn)足任何一個(gè)返回false值的條件,因此Boolean([0])=true,那么if判斷語(yǔ)句就進(jìn)入到true的判斷中。
那么就會(huì)執(zhí)行console.log(a==true),注意這里的判斷并不會(huì)調(diào)用Boolean的構(gòu)造方法,而是直接比較[0]與true。
這個(gè)時(shí)候true會(huì)轉(zhuǎn)換為1,[0]會(huì)進(jìn)行隱式轉(zhuǎn)換,[0]會(huì)轉(zhuǎn)換為'0',然后轉(zhuǎn)換為數(shù)字0,相當(dāng)于比較0與1的值。
很明顯0與1比較返回false,那么最終的結(jié)果是輸出false。
題目4主要考察的是算術(shù)運(yùn)算符與正負(fù)運(yùn)算符,題目代碼如下。
題目4
很多人看到這么多加減號(hào),都以為這題目是不是出錯(cuò)了?其實(shí)是沒(méi)有問(wèn)題的。
遇到這樣的題目,只要記住以下這點(diǎn)內(nèi)容:
在數(shù)字后面的第一個(gè)符號(hào)為算術(shù)運(yùn)算符加/減,其他加減號(hào)都是正負(fù)數(shù)轉(zhuǎn)換的運(yùn)算符。
第一行代碼可以拆分成這樣的內(nèi)容。
1 + (- + + + - + 1)
優(yōu)先處理后面括號(hào)中的值,其中的加減號(hào)表示正負(fù)數(shù)轉(zhuǎn)換的。
從右往左看,首先是+1,然后是負(fù)號(hào)-,變?yōu)?1,在連續(xù)三個(gè)正號(hào)+,還是-1,最后是一個(gè)負(fù)號(hào)-,變?yōu)?1。
其實(shí)最后計(jì)算就是1 + 1=2。
懂得這個(gè)原理后,我們直接看第三行代碼,拆分后變成這個(gè)樣子。
1 - (- + + + - - - - + + 1) + (1) + (- - - - + - 1)
對(duì)括號(hào)中的數(shù)優(yōu)先處理,第一個(gè)括號(hào)中得到的值是-1,第二個(gè)括號(hào)中得到的值是1,第三個(gè)括號(hào)中得到的值是-1。
所以實(shí)際的運(yùn)算是1-(-1)+1+(-1)=2。
在JavaScript中有一個(gè)arguments對(duì)象,表示的是傳遞給函數(shù)的參數(shù)對(duì)象,這道題目也與arguments有關(guān)。
題目5
我們來(lái)分析下上面的代碼。
定義一個(gè)函數(shù),用于將數(shù)組的第三個(gè)元素值賦給第一個(gè)元素。
定義第二個(gè)函數(shù),傳遞的參數(shù)先賦初始值,然后經(jīng)過(guò)第一個(gè)函數(shù)處理。
計(jì)算三個(gè)參數(shù)相加的和并返回。
在函數(shù)中arguments是直接代表該函數(shù)接收的參數(shù)列表的,上面的bar函數(shù)內(nèi)部的arguments實(shí)際就是[a, b, c]。
我們需要記住以下這條規(guī)則,在函數(shù)沒(méi)有接收變長(zhǎng)參數(shù)(...擴(kuò)展運(yùn)算符),默認(rèn)參數(shù)和結(jié)構(gòu)賦值等ES6的新特性時(shí),arguments對(duì)象的值和參數(shù)的值是相互影響的。
因此第一個(gè)函數(shù)中將第三個(gè)元素值賦給第一個(gè)元素是生效的,那么c=10,a=10,b=1,所以最終結(jié)果返回21。
但是如果使用了ES6中的幾個(gè)新特性時(shí),arguments對(duì)象的值和參數(shù)值是不會(huì)相互受影響的。
我們來(lái)看看以下的例子。
使用變長(zhǎng)參數(shù)
只需要將上面的題目做簡(jiǎn)單的修改,第一個(gè)函數(shù)的參數(shù)ary變?yōu)?..ary即可。
修改1-變長(zhǎng)參數(shù)
使用變長(zhǎng)參數(shù)后,對(duì)ary進(jìn)行修改,不會(huì)影響到原來(lái)函數(shù)的參數(shù)a,b,c的值,所以a=1, b=1,c=10,最終結(jié)果返回12。
使用默認(rèn)參數(shù)
同樣對(duì)以上原始題目做簡(jiǎn)單的修改,對(duì)c使用默認(rèn)參數(shù)。
默認(rèn)參數(shù)
修改后的代碼中,給c設(shè)定默認(rèn)值為2。使用默認(rèn)參數(shù)后情況與上面一種一樣,最終的結(jié)果也是返回12。
使用解構(gòu)賦值
對(duì)以上代碼進(jìn)行簡(jiǎn)單的改造,得到如下使用解構(gòu)賦值的代碼。
使用解構(gòu)賦值
同樣最終的結(jié)果返回12。
今天這篇文章講解了幾道JavaScript相關(guān)的題目,雖然代碼量都很少,但是理解起來(lái)卻不是那么容易,需要慢慢消化,希望今天的文章對(duì)你們有幫助噢~
avaScript作為一門(mén)如此靈活的語(yǔ)言,自然在編碼時(shí)給我們帶來(lái)了很多方便,但方便的同時(shí),也衍生出了很多變態(tài)的語(yǔ)法,下面我們來(lái)梳理一些常見(jiàn)的變態(tài)語(yǔ)法,希望你下次在某位大牛的代碼中看到這樣的東西,不要驚掉下巴。
?
NO.1
Number.prototype.add=function(n){
return this+n;
}
2["add"](3)
最后一句話(huà)是什么玩意兒?好像沒(méi)看懂呢? 我們來(lái)運(yùn)行一下看看:
擦? 居然執(zhí)行了?結(jié)果是5,看上去似乎對(duì)2和3做了加法。不是說(shuō)變量名不能數(shù)字開(kāi)頭么?這是怎么回事?瀏覽器抽風(fēng)了?
實(shí)際上js有很多不能說(shuō)的秘密,其中一個(gè)就叫做自動(dòng)裝箱,這是引用java里的叫法。也就是說(shuō),當(dāng)我們?cè)噲D2[“add”]的時(shí)候,這個(gè)數(shù)字2已經(jīng)不再是2了,它被自動(dòng)轉(zhuǎn)換成了Number對(duì)象,跟java中的包裝類(lèi)型是一個(gè)意思。
等價(jià)于這樣寫(xiě):
new Number(2)
而對(duì)象是可以通過(guò)[“prop"]這種形式來(lái)獲取屬性的,于是我們就不難推理了~
2["add"] 相當(dāng)于new Number(2).add
最終變成
new Number(2).add(3);
結(jié)果是 5
NO.2
+function(){;}()
這又是個(gè)什么玩意兒?函數(shù)前面帶個(gè)+號(hào)? 這難道是自動(dòng)類(lèi)型轉(zhuǎn)換?等等,里面是個(gè);號(hào)? 后面還有一對(duì)( )?
先不要著急驚訝,其實(shí)還有很多,例如:
-function(){;}()
!function(){;}()
~function(){;}()
void function(){;}()
new function(){;}()
delete function(){;}()
var i=function(){;}()
1 && function(){;}()
0 || function(){;}()
1 & function(){;}()
1 | function(){;}()
1 ^ function(){;}()
1, function(){;}()
這些“喪盡天良”的寫(xiě)法是誰(shuí)發(fā)明的?!你給我站出來(lái),我保證不打死你!(此處作者冷靜了5分鐘)……
接下來(lái)說(shuō)說(shuō)它的原理吧!
首先 , ;號(hào)本身也是一條語(yǔ)句,相信大多數(shù)同學(xué)應(yīng)該是知道的,就不多說(shuō)了。其次,一個(gè)函數(shù)的自調(diào)用,如果寫(xiě)成這樣:
錯(cuò)誤的原因在于,函數(shù)聲明和函數(shù)調(diào)用是不可以混在一起的,所以通常的寫(xiě)法是:
這并不是把函數(shù)當(dāng)成了一個(gè)整體來(lái)運(yùn)行,這里其實(shí)還有一個(gè)不能說(shuō)的秘密。
( )這個(gè)符號(hào),在js里是運(yùn)算符。(A)的結(jié)果是返回表達(dá)式A
所以它的出現(xiàn),讓這個(gè)匿名函數(shù)從聲明變成了執(zhí)行,也就是編譯期間瀏覽器不會(huì)提前準(zhǔn)備它,自然就沒(méi)有語(yǔ)法錯(cuò)誤。而幾分鐘前我們看到的那些喪心病狂的寫(xiě)法,其實(shí)原理都一樣,通過(guò)運(yùn)算符把聲明變成執(zhí)行。當(dāng)然這些符號(hào)都不會(huì)影響函數(shù)的正常執(zhí)行結(jié)果。
但是問(wèn)題又來(lái)了,這種泯滅人性的寫(xiě)法,現(xiàn)在居然還挺常見(jiàn)的,例如:
沒(méi)錯(cuò),這就是著名的bootstrap的js源碼,連它都是這么寫(xiě)的,莫非真有什么好處?
通過(guò)在網(wǎng)上查詢(xún)大量的資料,我還真發(fā)現(xiàn)有人專(zhuān)門(mén)對(duì)此做了研究,將上面這些寫(xiě)法全部在各個(gè)瀏覽器中間做了壓力測(cè)試,發(fā)現(xiàn)+function( ){;}( ) 執(zhí)行速度最快,比(function( ){})( )要快出好幾倍,而 new function( ){;}( ) 執(zhí)行速度最慢。
不過(guò)為了追求效率而把代碼寫(xiě)成這樣到底值不值,那只能你自己去判斷了。
NO.3
!!a
這又是什么鬼???!!a 實(shí)際上等價(jià)于 a || false
由于js中所有的內(nèi)容都是可以跟布爾類(lèi)型互換的,這也是js特別讓人費(fèi)解的地方,比如
if(window.VBArray){…}
可以用來(lái)判斷IE瀏覽器,因?yàn)閷?duì)象存在時(shí),等價(jià)于true,undefined等價(jià)于false,但是!很多時(shí)候我們判斷一個(gè)屬性是否存在,并不需要馬上作出反應(yīng),而是將結(jié)果告知他人,比如說(shuō)有個(gè)函數(shù),test(hasSuperman),函數(shù)規(guī)定調(diào)用時(shí)需要傳入一個(gè)布爾類(lèi)型,告知它superman是否存在,你可能會(huì)這樣寫(xiě):
if(window.superman){
test(true);
} else {
test(false);
}
但你最好不要這么寫(xiě):
test(window.superman);
因?yàn)槟悴⒉恢纓est函數(shù)內(nèi)部發(fā)生了什么,所以很難預(yù)料會(huì)不會(huì)產(chǎn)生錯(cuò)誤,因此最好的寫(xiě)法是這樣:
test(!!window.superman);
通過(guò)兩次取反,保證了值沒(méi)有變化,但類(lèi)型已經(jīng)被轉(zhuǎn)為了布爾類(lèi)型。好吧,似乎這么寫(xiě)還有點(diǎn)道理。
NO.4 最短IE(6,7,8)判定
if(!-[1,]){
//判斷IE6,7,8
}
它的原理實(shí)際上是利用了IE的bug。
當(dāng)我們寫(xiě)下一個(gè)數(shù)組 [1,].length
在IE中 [1,].length -------> 2
在非IE中 [1,].length -------> 1
當(dāng)我們?cè)噲D打印[1,],相當(dāng)于調(diào)用toString()方法
在IE中 [1,] -------> "1,"
在非IE中 [1,] -------> "1"
當(dāng)我們給它加上負(fù)號(hào)-[1,]
在IE中 -[1,] -------> NaN
在非IE中 -[1,] -------> -1
當(dāng)我們對(duì)它進(jìn)行取反!-[1,]
在IE中 !-[1,] -------> true
在非IE中 !-[1,] -------> false
這樣我們就可以判斷是否為IE瀏覽器了,這個(gè)bug一直到IE9之后才消失的。
好了,這次的變態(tài)語(yǔ)法就先講這么多,以后碰到更新鮮的再來(lái)給大家更新,拜拜。
編輯:千鋒web前端
今天這篇文章整理了幾道常見(jiàn)的Javascript筆試題,這些題目看似簡(jiǎn)單,但一不注意就會(huì)出錯(cuò),來(lái)看看你都會(huì)做嗎?
Javascript
我們都知道typeof是用于檢測(cè)一個(gè)變量的數(shù)據(jù)類(lèi)型的,instanceof是用于判斷某個(gè)變量是否是指定類(lèi)型的實(shí)例。
我們來(lái)看看下面的代碼。
題目1
在Javascript中Null作為一種單獨(dú)的數(shù)據(jù)類(lèi)型,其類(lèi)型只有一個(gè)值null。Null是一個(gè)特殊的Object類(lèi)型,因此在typeof null時(shí),返回的是‘object’。
既然typeof null返回的是object,那么null instanceof Object是不是就返回true呢?結(jié)果是否定的。
由于Null的特殊性,null值的產(chǎn)生并不是通過(guò)Object原型鏈的,通過(guò)Object類(lèi)型的原型鏈不能追溯到Null值,因此null instanceof Object返回值為false。
第二道題是reduce方法與Math.pow()方法結(jié)合,確定輸出結(jié)果,代碼如下。
題目2
首先我們來(lái)看看reduce方法的使用,它的API如下。
recude方法
接收一個(gè)回調(diào)函數(shù),對(duì)數(shù)組中的元素依次進(jìn)行處理,從參數(shù)名可以很容易看出previousValue為上一次計(jì)算結(jié)果的值,currentValue表示當(dāng)前處理值。
同時(shí)可選擇接收一個(gè)初始值initialValue,如果這個(gè)initialValue傳遞了,那么第一次調(diào)用回調(diào)函數(shù)時(shí)的previousValue就等于initialValue,如果沒(méi)有傳遞則previousValue就等于數(shù)組的第一個(gè)值。
理解上述的原則后,我們?cè)賮?lái)看看這道題目。
題目2中的回調(diào)函數(shù)是Math.pow(),Math.pow(a, b)表示的是a的b次方。其中a就是reduce回調(diào)函數(shù)的previousValue,b就是currentValue了。
在第一段代碼中,沒(méi)有傳遞initialValue,則previousValue為3,currentValue為2,那么計(jì)算后是Math.pow(3, 2)=9。
同理在第二次計(jì)算時(shí),previousValue為9,currentValue為1,則計(jì)算結(jié)果時(shí)Math.pow(9, 1)=9。
因此第一段代碼最終結(jié)果是9。
再來(lái)看看第二段代碼,不同于第一段的是它傳遞了initialValue為0,那么在進(jìn)行第一次計(jì)算時(shí),previousValue為0,currentValue為3,則第一次計(jì)算是Math.pow(0, 3)=0;
接下來(lái)進(jìn)行第二次計(jì)算,previousValue為上一次計(jì)算結(jié)果0,currentValue為2,則計(jì)算結(jié)果是Math.pow(0, 2)=0;
同理最后一次計(jì)算,previousValue為0,currentValue為1,計(jì)算結(jié)果是Math.pow(0, 1)=0;
因此第二段代碼最終結(jié)果是0。
第三道題考察的是Boolean與[0]的用法,代碼如下所示。
題目3
代碼首先定義了一個(gè)變量a,為只有一個(gè)元素0的數(shù)組。
然后通過(guò)if語(yǔ)句判斷[0]是否為true,進(jìn)而輸出不同的值。
這道題的核心在于if語(yǔ)句中的返回結(jié)果,需要注意的是,if語(yǔ)句的判斷結(jié)果實(shí)際是利用了Boolean的構(gòu)造方法,看看利用Boolean的構(gòu)造方法能否將if語(yǔ)句中的值轉(zhuǎn)化為true。
根據(jù)Boolean構(gòu)造方法的定義,如果邏輯對(duì)象無(wú)初始值或者其值為 0、-0、null、""、false、undefined 或者 NaN,Boolean構(gòu)造方法會(huì)返回false,否則返回true。
從題目中我們可以看出if語(yǔ)句中的值為[0],不滿(mǎn)足任何一個(gè)返回false值的條件,因此Boolean([0])=true,那么if判斷語(yǔ)句就進(jìn)入到true的判斷中。
那么就會(huì)執(zhí)行console.log(a==true),注意這里的判斷并不會(huì)調(diào)用Boolean的構(gòu)造方法,而是直接比較[0]與true。
這個(gè)時(shí)候true會(huì)轉(zhuǎn)換為1,[0]會(huì)進(jìn)行隱式轉(zhuǎn)換,[0]會(huì)轉(zhuǎn)換為'0',然后轉(zhuǎn)換為數(shù)字0,相當(dāng)于比較0與1的值。
很明顯0與1比較返回false,那么最終的結(jié)果是輸出false。
題目4主要考察的是算術(shù)運(yùn)算符與正負(fù)運(yùn)算符,題目代碼如下。
題目4
很多人看到這么多加減號(hào),都以為這題目是不是出錯(cuò)了?其實(shí)是沒(méi)有問(wèn)題的。
遇到這樣的題目,只要記住以下這點(diǎn)內(nèi)容:
在數(shù)字后面的第一個(gè)符號(hào)為算術(shù)運(yùn)算符加/減,其他加減號(hào)都是正負(fù)數(shù)轉(zhuǎn)換的運(yùn)算符。
第一行代碼可以拆分成這樣的內(nèi)容。
1 + (- + + + - + 1)
優(yōu)先處理后面括號(hào)中的值,其中的加減號(hào)表示正負(fù)數(shù)轉(zhuǎn)換的。
從右往左看,首先是+1,然后是負(fù)號(hào)-,變?yōu)?1,在連續(xù)三個(gè)正號(hào)+,還是-1,最后是一個(gè)負(fù)號(hào)-,變?yōu)?1。
其實(shí)最后計(jì)算就是1 + 1=2。
懂得這個(gè)原理后,我們直接看第三行代碼,拆分后變成這個(gè)樣子。
1 - (- + + + - - - - + + 1) + (1) + (- - - - + - 1)
對(duì)括號(hào)中的數(shù)優(yōu)先處理,第一個(gè)括號(hào)中得到的值是-1,第二個(gè)括號(hào)中得到的值是1,第三個(gè)括號(hào)中得到的值是-1。
所以實(shí)際的運(yùn)算是1-(-1)+1+(-1)=2。
在JavaScript中有一個(gè)arguments對(duì)象,表示的是傳遞給函數(shù)的參數(shù)對(duì)象,這道題目也與arguments有關(guān)。
題目5
我們來(lái)分析下上面的代碼。
定義一個(gè)函數(shù),用于將數(shù)組的第三個(gè)元素值賦給第一個(gè)元素。
定義第二個(gè)函數(shù),傳遞的參數(shù)先賦初始值,然后經(jīng)過(guò)第一個(gè)函數(shù)處理。
計(jì)算三個(gè)參數(shù)相加的和并返回。
在函數(shù)中arguments是直接代表該函數(shù)接收的參數(shù)列表的,上面的bar函數(shù)內(nèi)部的arguments實(shí)際就是[a, b, c]。
我們需要記住以下這條規(guī)則,在函數(shù)沒(méi)有接收變長(zhǎng)參數(shù)(...擴(kuò)展運(yùn)算符),默認(rèn)參數(shù)和結(jié)構(gòu)賦值等ES6的新特性時(shí),arguments對(duì)象的值和參數(shù)的值是相互影響的。
因此第一個(gè)函數(shù)中將第三個(gè)元素值賦給第一個(gè)元素是生效的,那么c=10,a=10,b=1,所以最終結(jié)果返回21。
但是如果使用了ES6中的幾個(gè)新特性時(shí),arguments對(duì)象的值和參數(shù)值是不會(huì)相互受影響的。
我們來(lái)看看以下的例子。
使用變長(zhǎng)參數(shù)
只需要將上面的題目做簡(jiǎn)單的修改,第一個(gè)函數(shù)的參數(shù)ary變?yōu)?..ary即可。
修改1-變長(zhǎng)參數(shù)
使用變長(zhǎng)參數(shù)后,對(duì)ary進(jìn)行修改,不會(huì)影響到原來(lái)函數(shù)的參數(shù)a,b,c的值,所以a=1, b=1,c=10,最終結(jié)果返回12。
使用默認(rèn)參數(shù)
同樣對(duì)以上原始題目做簡(jiǎn)單的修改,對(duì)c使用默認(rèn)參數(shù)。
默認(rèn)參數(shù)
修改后的代碼中,給c設(shè)定默認(rèn)值為2。使用默認(rèn)參數(shù)后情況與上面一種一樣,最終的結(jié)果也是返回12。
使用解構(gòu)賦值
對(duì)以上代碼進(jìn)行簡(jiǎn)單的改造,得到如下使用解構(gòu)賦值的代碼。
使用解構(gòu)賦值
同樣最終的結(jié)果返回12。
今天這篇文章講解了幾道JavaScript相關(guān)的題目,雖然代碼量都很少,但是理解起來(lái)卻不是那么容易,需要慢慢消化,希望今天的文章對(duì)你們有幫助噢~
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。