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

資訊專欄INFORMATION COLUMN

一道JS試題引發(fā)的思考

xiao7cn / 924人閱讀

摘要:也給當(dāng)初出入迷宮的我不小考驗(yàn),一道題目可以引發(fā)許多思考,今天寫下的只是今時(shí)今日的想法,到未來也許還有別樣的看法。對(duì)于回調(diào)函數(shù),可以對(duì)其傳入三個(gè)參數(shù)分別是當(dāng)前元素,元素索引,調(diào)用的數(shù)組。

    ["1","2","3"].map(parseInt)

這道JS題目,相信大家并不會(huì)陌生。也給當(dāng)初出入JS迷宮的我不小考驗(yàn),一道題目可以引發(fā)許多思考,今天寫下的只是今時(shí)今日的想法,到未來也許還有別樣的看法。

parseInt

得到正確答案,我們先來看看parseInt這個(gè)函數(shù)

名稱:parseInt

功能:將字符串轉(zhuǎn)化為數(shù)字

函數(shù)可以接受兩個(gè)參數(shù),一般來說第一個(gè)參數(shù)是字符串,第二個(gè)參數(shù)是該字符串采用的進(jìn)制數(shù)(接受2-36)。

如果不傳參數(shù)?
    parseInt()  //NaN
傳入一個(gè)參數(shù)

這個(gè)時(shí)候會(huì)默認(rèn)將字符串為十進(jìn)制進(jìn)行解析

    parseInt("1111")  //1111

不是所有字符串都可以正確解析的,遇到非數(shù)字的字符串會(huì)解析為NaN

    parseInt("Yoda")  //NaN

還要說明的一點(diǎn)是,字符串的解析從首位開始,如果是數(shù)字就繼續(xù)直到解析到非數(shù)字項(xiàng)

    parseInt("2233Yoda")  //2233
做一些奇怪的事

但是如果傳入的不是字符串?
來看下栗子?

    parseInt(2233)  //2233

如果是數(shù)字轉(zhuǎn)換為相應(yīng)字符串

    parseInt(null)  //NaN
    parseInt(undefined)  //NaN
    parseInt(false)  //NaN
    parseInt(true)  //NaN

布爾值,undefined,null一律返回NaN,其實(shí)NaN也返回NaN

    parseInt(NaN)  //NaN
第二參數(shù)是第一個(gè)參數(shù)字符串采用的進(jìn)制數(shù)
parseInt("F", 16);
parseInt("17", 8);
parseInt("15", 10);
parseInt(15.99, 10);
parseInt("FXX123", 16);
parseInt("1111", 2);
parseInt("15*3", 10);
parseInt("12", 13);

以上都返回15。

關(guān)于第二參數(shù)有幾點(diǎn)點(diǎn)需要說一下。

1.第二參數(shù)取值范圍是2-36,如果超出范圍會(huì)返回NaN;

    parseInt("2233",37)  //NaN

如果傳入0,則忽略,和不傳效果一樣

    parseInt("2233",0)  //2233

2.如果字符串超出進(jìn)制的顯示范圍也會(huì)返回NaN;

    parseInt("2233",2)  //NaN

3.如果傳入值不是number類型,會(huì)出現(xiàn)一些奇怪的事

    parseInt("11","2")  //3  字符串被轉(zhuǎn)換成數(shù)字
    parseInt("2233",false)  //2233  布爾型被轉(zhuǎn)換成數(shù)字
    parseInt("2233",037)  //61600  看到這個(gè)我有點(diǎn)方
    parseInt("2233",true+true+true+true)  //175   看到這個(gè)我更方
    var arr = [1,2,3]
    parseInt("2233",arr)
    parseInt("2233","Yoda")  //2233
    

第二參數(shù)支持基本類型加減轉(zhuǎn)換,還支持字符串或其它位進(jìn)制值,如果解析不成數(shù)字該參數(shù)會(huì)被忽略。

map函數(shù)

map函數(shù)是數(shù)組迭代操作中一個(gè)常用的方法,可以按照特定的函數(shù)來處理數(shù)組,返回值是新的數(shù)組,原數(shù)組不會(huì)改變:

    var arr = [1,2,3]
    var newArr = a.map(function(para1){return a+2});
    console.log(arr)  // [1,2,3]
    console.log(newArr)  //[3,4,5]
    

這里要清楚map可以傳入兩個(gè)參數(shù),第一個(gè)是一個(gè)回調(diào)函數(shù),第二個(gè)是this(篇幅有限這里就不展開這塊了)。對(duì)于回調(diào)函數(shù),map可以對(duì)其傳入三個(gè)參數(shù)分別是當(dāng)前元素,元素索引,調(diào)用map的數(shù)組。

是不是有點(diǎn)暈?!讓我們 擼一擼 啊呸! 捋一捋:

map函數(shù)接受一個(gè)回調(diào)函數(shù)callback

callback可以傳入三個(gè)參數(shù)(前元素,元素索引,調(diào)用map的數(shù)組)

結(jié)合前面說的parseInt,parseInt可以傳入兩個(gè)參數(shù)(字符串,進(jìn)制數(shù))

是不是有一種豁然開朗的趕腳?為什么返回值是[1,NaN,NaN]?

對(duì)于數(shù)組["1","2","3"],執(zhí)行["1","2","3"].map(parseInt)時(shí),對(duì)于第一個(gè)元素"1"她的index為0:

parseInt("1",0)   // 1

第二參數(shù)會(huì)直接被忽略從而得到結(jié)果,對(duì)于第二個(gè)元素"2"她的index為1:

parseInt("2",1)   // NaN

翻看前問即可知道,結(jié)果;

同樣對(duì)于第三個(gè)參數(shù)"3",由于二進(jìn)制值任何一位不可能有3,所以結(jié)果也是NaN

parseInt("3",2)   // NaN

Ps:查閱了網(wǎng)上的許多資料,也看了不少書,加了一些自己的思考這道題就解到這里,如果錯(cuò)誤還請(qǐng)指正。

PPs:這題中參數(shù)index就是所傳入元素的index,可以傳入index的還有數(shù)組的另一個(gè)方法reduce,形如:

array.reduce(function(preValue,currentValue,index,array){
    return //.... 
})

這里既然可以傳入兩個(gè)值,那么index究竟是誰的index?這個(gè)就留到下回繼續(xù)討論。

本文的github地址

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

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

相關(guān)文章

  • 一道三目運(yùn)算測(cè)試題引發(fā)思考

    摘要:因?yàn)榧臃ǖ膬?yōu)先級(jí)比條件運(yùn)算符高,所以先運(yùn)算加號(hào),是字符串拼接,結(jié)果是非空字符串,在中字符串的布爾類型為。知識(shí)點(diǎn)三目運(yùn)算為真執(zhí)行為假執(zhí)行運(yùn)算優(yōu)先級(jí)在中布爾類型只有以下種情況為假,其他都為真。 一、測(cè)試題 原題:以下代碼的輸出是? var val = false; alert(val is + val ? true : false); 解析: 1. 此題考察的知識(shí)點(diǎn): 三目運(yùn)算、**運(yùn)...

    SHERlocked93 評(píng)論0 收藏0
  • 一道setTimeout async promise執(zhí)行順序試題引發(fā)思考

    摘要:如果你要問他和誰當(dāng)進(jìn)去的快,要從下面兩個(gè)方面考慮結(jié)束時(shí)。至于什么,查了很多的資料,了解到一個(gè)瀏覽器環(huán)境只能有一個(gè)事件循環(huán),而一個(gè)事件循環(huán)可以有多個(gè)任務(wù)隊(duì)列。 ====據(jù)說這是今日頭條去年的一道筆試題,主要考察的是setTimeout async promise執(zhí)行順序 ~先雙手奉上這道題目~ async function async1() { consol...

    soasme 評(píng)論0 收藏0
  • 一道試題引發(fā)思考

    摘要:前兩天做了一份筆試題按照?qǐng)?zhí)行順序列出下面代碼的打印內(nèi)容可能有些小朋友會(huì)被里面那個(gè)立即執(zhí)行函數(shù)嚇傻。和將指向改變至,也就是了。 前兩天做了一份筆試題:按照?qǐng)?zhí)行順序列出下面代碼的打印內(nèi)容 var name = The Window; var object = { name : The Object, getNameFunc : function(){ (()...

    soasme 評(píng)論0 收藏0
  • 一道2016年nice校招筆試題引發(fā)思考

    摘要:注意點(diǎn)這個(gè)代碼是嚴(yán)格依賴環(huán)境的,例如中和是連續(xù)的,在編譯器中,和之間有一個(gè)空間。注意點(diǎn)當(dāng)把與交換之后,程序?qū)⒉粫?huì)出現(xiàn)死循環(huán),但是程序的越界訪問報(bào)錯(cuò)是少不了的。注意點(diǎn)這種優(yōu)化是無差別的,即無論你的代碼是否越界,都會(huì)進(jìn)行這樣的優(yōu)化。 目錄 聲明 原題 題目詳細(xì)解析 運(yùn)行結(jié)果: 題目...

    shixinzhang 評(píng)論0 收藏0
  • 一道試題引發(fā)Promise筆記

    摘要:對(duì)象是一個(gè)返回值的代理,這個(gè)返回值在對(duì)象創(chuàng)建時(shí)未必已知。這使得異步方法可以像同步方法那樣返回值異步方法會(huì)返回一個(gè)包含了原返回值的對(duì)象來替代原返回值。 前言 近來參加校招筆試,發(fā)現(xiàn)有好幾道關(guān)于Promise的題目。然而我都沒有了解過。所以,這篇文章以網(wǎng)易筆試的一道題開始,記錄關(guān)于Promise的那些事。文章地址:http://lsxj615.com/2016/08/04... 筆試題 c...

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

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

0條評(píng)論

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