• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    JavaScript代碼日常注意六點(diǎn)

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:00:56
    文檔

    JavaScript代碼日常注意六點(diǎn)

    JavaScript代碼日常注意六點(diǎn):大家在日常JavaScript開(kāi)發(fā)中都需要注意一些代碼是否會(huì)出錯(cuò),而我們今天來(lái)總結(jié)一下JavaScript中日常開(kāi)發(fā)需要注意的六點(diǎn)易錯(cuò)部分,相信很多同學(xué)都需要來(lái)看看哦!廢話(huà)少說(shuō)我們直接開(kāi)始進(jìn)入正題吧!立即執(zhí)行函數(shù)立即執(zhí)行函數(shù),通常也可作閉包,能夠構(gòu)造一個(gè)函數(shù)級(jí)
    推薦度:
    導(dǎo)讀JavaScript代碼日常注意六點(diǎn):大家在日常JavaScript開(kāi)發(fā)中都需要注意一些代碼是否會(huì)出錯(cuò),而我們今天來(lái)總結(jié)一下JavaScript中日常開(kāi)發(fā)需要注意的六點(diǎn)易錯(cuò)部分,相信很多同學(xué)都需要來(lái)看看哦!廢話(huà)少說(shuō)我們直接開(kāi)始進(jìn)入正題吧!立即執(zhí)行函數(shù)立即執(zhí)行函數(shù),通常也可作閉包,能夠構(gòu)造一個(gè)函數(shù)級(jí)

    大家在日常JavaScript開(kāi)發(fā)中都需要注意一些代碼是否會(huì)出錯(cuò),而我們今天來(lái)總結(jié)一下JavaScript中日常開(kāi)發(fā)需要注意的六點(diǎn)易錯(cuò)部分,相信很多同學(xué)都需要來(lái)看看哦!廢話(huà)少說(shuō)我們直接開(kāi)始進(jìn)入正題吧!

    立即執(zhí)行函數(shù)

    立即執(zhí)行函數(shù),通常也可作閉包,能夠構(gòu)造一個(gè)函數(shù)級(jí)別的變量作用域。一般寫(xiě)法如下:

    (function () {
     // code
    })();

    但是這中寫(xiě)法容易造成一些問(wèn)題,如上面的代碼如果沒(méi)有分號(hào)結(jié)尾的話(huà):

    var a = 1
    (function () { // Uncaught TypeError: 1 is not a function
    })()

    那么應(yīng)該這樣寫(xiě):

    void function () {
     // code
    }();

    或者:

    !function () {
     // code
    }();
    ;(function(){
     //code
    })()

    選擇哪種看個(gè)人喜好,現(xiàn)在js中有個(gè)規(guī)范叫standardjs規(guī)范, 提倡省略行尾的分號(hào)(個(gè)人不太習(xí)慣),需要改變這個(gè)習(xí)慣。

    2.空對(duì)象null

    從JS誕生以來(lái),賦予了null為Object類(lèi)型,可以說(shuō)是JS的一個(gè)終生bug,從未、以后也不會(huì)改變。

    null不具備作為對(duì)象的基本特征,屬于原始數(shù)據(jù)類(lèi)型。我想說(shuō)明的是在判斷一個(gè)變量是否是對(duì)象之前,應(yīng)該先判斷其是否為null。

    if (opt!== null && typeof opt=== 'object') {
     // opt是一個(gè)對(duì)象
    }

    3.不要隨意對(duì)小數(shù)做比較

    在做小數(shù)之間的計(jì)算時(shí)候,注意浮點(diǎn)數(shù)之前的精度問(wèn)題。

    如:0.1+0.2是否等于0.3? 答案是:0.1+0.2=0.30000000000000004

    類(lèi)似:0.4-0.3=0.10000000000000003

    如果存在此類(lèi)計(jì)算,那么先把小數(shù)轉(zhuǎn)為字符串,使用toFixed去小數(shù)若干位進(jìn)行比較:

    (0.1 + 0.2).toFixed(2) === '0.30'

    注意:兩個(gè)數(shù)的差值小到一定范圍的時(shí)候,即可以認(rèn)為他們是相等的。

    Math.abs(0.1+0.2 - 0.3) <= 1e-10 // true

    4.時(shí)刻記住NaN

    一說(shuō)到NaN,那么有個(gè)特性大伙應(yīng)該都會(huì)想起,NaN !==NaN。對(duì),就這么屌。

    如果你需要判斷一個(gè)變量是否為NaN,只需要把它跟它自己比較,如果不相等,那么就是NaN。

    判斷一個(gè)數(shù)字是否為NaN,可以使用isNaN()方法。但是如果不知道某個(gè)變量的具體數(shù)據(jù)類(lèi)型的時(shí)候,不要輕易用該方法來(lái)判斷,因?yàn)閕sNaN有個(gè)詭異特性:它會(huì)先把要判斷的變量先轉(zhuǎn)換成數(shù)值來(lái)計(jì)算。

    isNaN('abc') // true
    isNaN('123') // false
    isNaN('') // false
    isNaN([]) // false
    isNaN({}) // true

    那么這時(shí)候會(huì)對(duì)你的判斷結(jié)果造成意外。

    還有一個(gè)注意點(diǎn)就是,永遠(yuǎn)不要拿任何變量跟NaN來(lái)比較,如:opt===NaN。

    5.除了比較null和undefined,永遠(yuǎn)不要使用非嚴(yán)格==和!=

    相信你會(huì)看到很多文章、規(guī)范都會(huì)說(shuō)盡量使用===和!==,不使用==和!=,原因在于后者會(huì)進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換(造成難以查找的bug)。

    先看一下:

    'true' == true // => false
    'true' == false // => false
    [] == {} // => false
    [] == [] // => false

    如果你對(duì)以上判斷存在疑惑,那就記住一個(gè)規(guī)則:

    null == null // => true
    undefined == undefined // => true
    null == undefined // => true
    undefined == null // => true
    x == null // => false (x 非 null 或 undefined)
    x == undefined // => false (x 非 null 或 undefined)

    也即是判斷x是否為null或者undefined,那么就用==,否則,永遠(yuǎn)不要使用。

    6.慎用 || 設(shè)置默認(rèn)值

    給一個(gè)變量設(shè)置一個(gè)默認(rèn)值,相信入坑多年的JS開(kāi)發(fā)者都會(huì)這樣寫(xiě):

    page = page || 0;
    data = data || '你好';

    解釋下arg1 || arg2的意思是如果arg1能夠轉(zhuǎn)換為true,那么就取arg1,否則取arg2。

    那么我們先看一下不可以轉(zhuǎn)化為true的值有哪些?

    1.undefined

    2.null

    3.NaN

    4.整數(shù)0

    5.空字符串 “ ”

    所以如果當(dāng)用戶(hù)傳給arg1的參數(shù)是0或者為空字符串“”的時(shí)候,那么最終的值就會(huì)取默認(rèn)的(||后面)值是不是?好,問(wèn)題來(lái)了。如果用戶(hù)傳給后臺(tái)的查詢(xún)關(guān)鍵字data(上面代碼)是空字符串“”,那么就應(yīng)該按照空字符串“”去后臺(tái)數(shù)據(jù)庫(kù)查詢(xún),而結(jié)果傳給后臺(tái)的卻是“你好”,顯然查詢(xún)結(jié)果也就不對(duì)。

    好,回到主題,實(shí)際上只有undefined才應(yīng)該被認(rèn)為是用戶(hù)沒(méi)有指定其具體值,我曾看過(guò)有人這樣理解(null 表示 用戶(hù)讓你給他把這個(gè)位置空著;而 undefined 表示 用戶(hù)沒(méi)發(fā)表意見(jiàn)

    so :

    page = page !== undefined ? page : 0;
    data = data !== undefined ? data :'你好';

    只需判斷undefined即可。

    個(gè)人理解如果有需求,可以把null加進(jìn)去判斷。

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JavaScript代碼日常注意六點(diǎn)

    JavaScript代碼日常注意六點(diǎn):大家在日常JavaScript開(kāi)發(fā)中都需要注意一些代碼是否會(huì)出錯(cuò),而我們今天來(lái)總結(jié)一下JavaScript中日常開(kāi)發(fā)需要注意的六點(diǎn)易錯(cuò)部分,相信很多同學(xué)都需要來(lái)看看哦!廢話(huà)少說(shuō)我們直接開(kāi)始進(jìn)入正題吧!立即執(zhí)行函數(shù)立即執(zhí)行函數(shù),通常也可作閉包,能夠構(gòu)造一個(gè)函數(shù)級(jí)
    推薦度:
    標(biāo)簽: 注意 js 代碼
    • 熱門(mén)焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門(mén)推薦

    專(zhuān)題
    Top
    主站蜘蛛池模板: 精品一卡2卡三卡4卡免费视频| 99久久99久久精品国产片| 国产91精品一区二区麻豆网站| 久久精品国产亚洲Aⅴ蜜臀色欲| 国产精品亚洲A∨天堂不卡| 久久久91人妻无码精品蜜桃HD| 国产精品一久久香蕉国产线看| 亚洲精品蜜桃久久久久久| 国产乱子伦精品无码专区| 国产99视频精品一区| 麻豆aⅴ精品无码一区二区| 欧美精品一区二区三区免费| 国产精品免费久久久久久久久| 99久久国产综合精品麻豆| 少妇人妻偷人精品无码视频新浪| 蜜桃麻豆www久久国产精品 | 国产精品无码一区二区三级| 欧美日韩综合精品| 国产A∨免费精品视频| 久久精品免费一区二区三区| 国产产无码乱码精品久久鸭| 四虎国产精品永久地址入口| 国产亚洲精品看片在线观看| 精品视频一区二区三区在线观看 | 国产精品一区二区av| 亚洲情侣偷拍精品| 久久www免费人成精品香蕉| 2021国产三级精品三级在专区| 国产精品高清一区二区三区不卡 | 久久精品国产亚洲AV不卡| 国产精品九九九| 国产精品白丝jkav网站| 99久久精品费精品国产| 亚洲人成亚洲精品| 成人免费精品网站在线观看影片| 欧美777精品久久久久网| 精品国产污污免费网站| 久久综合九色综合精品| 99riav国产精品| 国产精品内射婷婷一级二| 国产精品乱视频|