<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guā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)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript代碼日常注意六點

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 20:00:56
        文檔

        JavaScript代碼日常注意六點

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

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

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

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

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

        但是這中寫法容易造成一些問題,如上面的代碼如果沒有分號結(jié)尾的話:

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

        那么應該這樣寫:

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

        或者:

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

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

        2.空對象null

        從JS誕生以來,賦予了null為Object類型,可以說是JS的一個終生bug,從未、以后也不會改變。

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

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

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

        在做小數(shù)之間的計算時候,注意浮點數(shù)之前的精度問題。

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

        類似:0.4-0.3=0.10000000000000003

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

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

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

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

        4.時刻記住NaN

        一說到NaN,那么有個特性大伙應該都會想起,NaN !==NaN。對,就這么屌。

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

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

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

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

        還有一個注意點就是,永遠不要拿任何變量跟NaN來比較,如:opt===NaN。

        5.除了比較null和undefined,永遠不要使用非嚴格==和!=

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

        先看一下:

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

        如果你對以上判斷存在疑惑,那就記住一個規(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,那么就用==,否則,永遠不要使用。

        6.慎用 || 設置默認值

        給一個變量設置一個默認值,相信入坑多年的JS開發(fā)者都會這樣寫:

        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.空字符串 “ ”

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

        好,回到主題,實際上只有undefined才應該被認為是用戶沒有指定其具體值,我曾看過有人這樣理解(null 表示 用戶讓你給他把這個位置空著;而 undefined 表示 用戶沒發(fā)表意見

        so :

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

        只需判斷undefined即可。

        個人理解如果有需求,可以把null加進去判斷。

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

        文檔

        JavaScript代碼日常注意六點

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 色久悠悠婷婷综合在线亚洲| 国产免费啪嗒啪嗒视频看看| 亚洲成av人影院| 无人视频免费观看免费视频| 国产精品黄页在线播放免费| 亚洲人成77777在线观看网| 麻豆最新国产剧情AV原创免费| 亚洲精品日韩中文字幕久久久| 三年片在线观看免费观看大全一 | 成人毛片18女人毛片免费96| 亚洲日本乱码卡2卡3卡新区| 大陆一级毛片免费视频观看i| 亚洲精品无码中文久久字幕| 日本不卡免费新一二三区| 国产成人精品日本亚洲语音| 亚洲?V无码成人精品区日韩| 黄色片免费在线观看| 亚洲网址在线观看| 日韩一区二区a片免费观看 | 亚洲AV乱码久久精品蜜桃| 亚洲一区免费观看| 亚洲一区二区三区精品视频| 日韩免费视频一区| 抽搐一进一出gif免费视频| 亚洲Av熟妇高潮30p| 成人免费毛片观看| 国产成人无码免费网站| 中文字幕亚洲综合精品一区| 性xxxx视频播放免费| 国内精品免费久久影院| 亚洲剧场午夜在线观看| 国产精品久免费的黄网站| 免费看少妇高潮成人片| 亚洲国产高清美女在线观看| 大胆亚洲人体视频| 99久久免费精品视频| 亚洲av无码专区首页| 亚洲电影一区二区三区| 国产美女无遮挡免费网站| a级毛片在线免费观看| 亚洲高清视频在线|