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 国内久久久久影院精品,久久亚洲精品成人,国产高清在线精品一区在线

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢(xún)熱線(xiàn):

          看看這些只有幾行代碼的JavaScript筆試題你會(huì)

          看看這些只有幾行代碼的JavaScript筆試題你會(huì)做嗎?


          今天這篇文章整理了幾道常見(jiàn)的Javascript筆試題,這些題目看似簡(jiǎn)單,但一不注意就會(huì)出錯(cuò),來(lái)看看你都會(huì)做嗎?

          Javascript

          題目1-typeof和instanceof

          我們都知道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。

          題目2-reduce方法

          第二道題是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。

          題目3-Boolean與[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

          題目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。

          題目5-arguments

          在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。

          結(jié)束語(yǔ)

          今天這篇文章講解了幾道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

          題目1-typeof和instanceof

          我們都知道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。

          題目2-reduce方法

          第二道題是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。

          題目3-Boolean與[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

          題目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。

          題目5-arguments

          在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。

          結(jié)束語(yǔ)

          今天這篇文章講解了幾道JavaScript相關(guān)的題目,雖然代碼量都很少,但是理解起來(lái)卻不是那么容易,需要慢慢消化,希望今天的文章對(duì)你們有幫助噢~


          主站蜘蛛池模板: 制服丝袜一区二区三区| 久久se精品一区精品二区国产| 亚洲一区无码中文字幕乱码| 国产一区二区三区亚洲综合| 国产一区二区三区免费观看在线 | 日本精品一区二区三本中文| 精品亚洲综合在线第一区| 国产人妖视频一区二区破除| 97se色综合一区二区二区| 无码人妻久久久一区二区三区| 一区二区三区午夜| 在线观看精品一区| 日本精品无码一区二区三区久久久 | 蜜臀AV一区二区| 久久无码人妻一区二区三区午夜 | 性色av一区二区三区夜夜嗨 | 亚洲国产欧美一区二区三区| 在线精品国产一区二区| 国产精品高清一区二区三区| 中文字幕在线播放一区| 三上悠亚国产精品一区| 人成精品视频三区二区一区| 无码精品人妻一区| 人妻体内射精一区二区| 亚洲av无码天堂一区二区三区| av无码一区二区三区| 国产成人无码AV一区二区在线观看| 无人码一区二区三区视频| 国产成人久久精品一区二区三区 | 精品国产一区二区三区www| 精品国产一区二区三区AV| 国产成人av一区二区三区不卡| 国产一区二区三区福利| 国产一区高清视频| 日韩一本之道一区中文字幕| 成人区精品人妻一区二区不卡| 亚洲AV综合色一区二区三区| 亚洲一区中文字幕在线观看| 无码一区二区三区爆白浆| 无码精品人妻一区| 91video国产一区|