日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript初學(xué)者容易犯的幾個錯誤

瀏覽:25日期:2023-06-04 11:57:51
前言

拋開 JavaScript 語言設(shè)計層面的問題不說,畢竟它是 Brendan Eich 當年用短短十天時間設(shè)計出來的,有點缺陷也是在所難免。作為開發(fā)者,我們該怎樣避免一些常見的低級錯誤呢?本文就列舉幾個常見錯誤,看看你有沒有似曾相識。

混淆 undefined 和 null

JavaScript 中的undefined和null都可用來表示沒有值,但是二者之間有所區(qū)別。undefined字面意思是“未定義”,但它的含義其實已經(jīng)超出了變量未定義的范疇:嘗試讀取對象不存在的屬性、沒有return語句的函數(shù)的返回值、聲明后沒有賦值的變量甚至顯式賦值為undefined的變量等,它們的結(jié)果都是undefined。用typeof測試它的類型,是字符串’undefined’。而null就比較純粹了,變量只有設(shè)置為null才有這個值。另外,null是對象類型,即typeof(null)的值是字符串’object’。

需要注意的是,用if判斷這兩個值都是false,而且null==undefined是成立的,這一點初學(xué)者通常容易搞混。因此,盡量統(tǒng)一把“沒有值”都設(shè)置為undefined,這樣就省去了判斷區(qū)分的麻煩。

返回undefined的函數(shù):

const f = () => {}

設(shè)置變量的值為undefined:

x = undefined;

判斷屬性是否為undefined:

typeof obj.prop === ’undefined’obj.prop === undefined

判斷變量是否為undefined:

typeof x === ’undefined’

變量聲明后沒有賦值,自動就有了undefined值。

如果一定要判斷null,用全等判斷:

obj.prop === nullx === null

使用typeof是無法判斷null的,因為它是對象類型。

混淆數(shù)字相加和字符串拼接

在 JavaScript 中,加號+操作符既可用于數(shù)字相加,也可以用于字符串拼接。由于 JavaScript 是動態(tài)語言,操作符會自動將變量轉(zhuǎn)成相同數(shù)據(jù)類型再運算。比如:

let x = 1 + 1; // 2

結(jié)果是 2,是我們期望的數(shù)字相加操作,因為兩個值都是數(shù)字。

但是,如果是下面這種表達式:

let x = 1 + ’1’; // “11”

結(jié)果是’11’,因為第一個數(shù)字會轉(zhuǎn)換成字符串。這里的加號+運算符被用作字符串拼接,而不是數(shù)字相加。這里能直接看到表達式的值還算清楚,如果是由多個變量組成的表達式就很難判斷類型了。

為了解決這個問題,我們可以把字符串都轉(zhuǎn)成數(shù)字類型,再進行運算。例如:

let x = 1; let y = ’2’; let z = Number(x) + Number(y);

這樣,運行結(jié)果就是3了。Number函數(shù)接收任意類型的值,如果能轉(zhuǎn)成數(shù)字就返回數(shù)字,否則返回NaN。還可以用new Number(...).valueOf()函數(shù):

let x = 1; let y = ’2’; let z = new Number(x).valueOf() + new Number(y).valueOf();

由于new Number(...)是實例化一個構(gòu)造函數(shù),返回的是一個對象,并不是數(shù)字類型。如果要得到原始的數(shù)字類型,需要用該對象的valueOf方法。其實還有個更簡潔的方法:

let x = 1; let y = ’2’; let z = +x + +y;

變量前面的 + 作用是將它轉(zhuǎn)換成數(shù)字,或者NaN,跟Number函數(shù)的作用相同。

return 語句換行問題

JavaScript 語法規(guī)定換行代表語句結(jié)束。例如:

const add = (a, b) => { return a + b; }add(1,2); // undefined

本以為會返回 3,實際上是undefined。這是因為在a + b之前,函數(shù)已經(jīng)執(zhí)行了return。要解決這個問題,有兩個做法:要么把表達式跟return放在一行,要么把表達式套一層括號。

const add = (a, b) => { return a + b; }// 或者const add = (a, b) => { return ( a + b ); }

加括號為什么可以換行呢?因為括號里的是表達式,不是語句。表達式可以拆成多行,如果很長的話。用箭頭函數(shù)會更直觀:

const add = (a, b) => a + b

箭頭函數(shù)里的單行表達式自帶return效果,當然也可以在表達式外面套一層括號:

const add = (a, b) => (a + b)

這個括號在返回對象字面量的箭頭函數(shù)里有點用處,因為不加圓括號()的話,{}只是函數(shù)體的開始和結(jié)束標記,要返回對象字面量,還要顯式return {...}。

如果某行代碼中的語句不完整,JavaScript 解析器會將下一行的語句合并一起解析。比如:

const power = (a) => { const power = 10; return a ** 10; }// 等同于:const power = (a) => { const power = 10; return a ** 10; }

但是對于完整的語句,比如return,就不會合并多行。

用 return 跳出 forEach 循環(huán)

JavaScript 數(shù)組有個 forEach 方法,用于對數(shù)組元素進行循環(huán)操作。初學(xué)者很容易聯(lián)想到 for循環(huán)的break或continue關(guān)鍵字,用來中止循環(huán)。但是對不起,forEach沒有這兩個關(guān)鍵字。那用return行不行?可以用,但它的作用就是提前返回函數(shù),跟continue的效果類似,用于結(jié)束本次循環(huán)。要跳出整個循環(huán),return做不到。

const nums = [1, 2, 3, 4, 5, 6];let firstEven;nums.forEach(n => { if (n % 2 ===0 ) { firstEven = n; return n; }});console.log(firstEven); // 6

代碼本意是想找出第一個偶數(shù),找到就退出循環(huán)。但實際并沒有退出循環(huán),因此最終結(jié)果是最后一個偶數(shù)。有解決辦法嗎?這種情況可以用for循環(huán),或者用數(shù)組filter、find之類的方法。

總結(jié)

雖然 JavaScript 很容易上手,但稍不注意還是比較容易犯錯。本文簡單介紹了幾種容易犯的錯,希望對你有所幫助。

以上就是JavaScript初學(xué)者容易犯的幾個錯誤的詳細內(nèi)容,更多關(guān)于JS的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美另类中文字幕| 97精品视频在线看| 欧美亚洲国产激情| 欧美激情一区| 免费视频一区二区三区在线观看 | 国产精品视频3p| 国产人成精品一区二区三| 视频精品一区二区| 天堂中文在线播放| 欧产日产国产精品视频| 国产精品777777在线播放 | 亚洲高清久久| 亚洲一级网站| 夜久久久久久| 亚洲久久视频| 日本午夜精品久久久久| 国产精品日本一区二区三区在线| 国产精品videossex久久发布| 国产精品videossex久久发布 | 久久福利在线| 国产91在线精品| 成人免费网站www网站高清| 丝袜美腿一区| 五月天久久久| 亚洲精品美女91| 国产私拍福利精品视频二区| 老牛国内精品亚洲成av人片| 欧美片第1页| 先锋亚洲精品| 国产精品伊人| 韩国三级一区| 久久www成人_看片免费不卡| 日韩一区二区三区免费视频| 欧美国产精品| 136国产福利精品导航网址| 亚洲一区亚洲| 国产欧美日韩一区二区三区在线| 麻豆免费精品视频| 日韩av首页| 四虎在线精品| 卡一卡二国产精品| 激情五月色综合国产精品| 亚洲精品裸体| 精品国产一区二区三区av片| 欧美日韩中文一区二区| 中文字幕视频精品一区二区三区| 国产精品一站二站| 国产91精品对白在线播放| 日韩国产91| 特黄毛片在线观看| 亚洲区第一页| 美女在线视频一区| 久久亚洲色图| 久久蜜桃av| 国产在线看片免费视频在线观看| 国产精品毛片久久| 一级欧洲+日本+国产| 日韩精品成人在线观看| 精品国产精品久久一区免费式 | 天堂俺去俺来也www久久婷婷| 美女视频免费精品| 久久青草久久| 日韩国产欧美三级| 久久亚洲成人| 国产精品igao视频网网址不卡日韩 | 中文字幕高清在线播放| 亚洲资源av| 黄色网一区二区| 亚洲丝袜啪啪| 日韩电影免费网址| 久久狠狠久久| 亚洲欧洲一区| 在线看片福利| 国产三级一区| 国产亚洲激情| 欧美日韩免费看片| 久久av日韩| 免费视频一区二区| 99久久婷婷这里只有精品| 久久激五月天综合精品| 欧美99久久| 国产美女高潮在线| 91嫩草精品| 午夜亚洲福利在线老司机| 久久久久久婷| 日韩av网站在线免费观看| 美女网站一区| 色综合五月天| 欧美黄色一区二区| 午夜在线精品偷拍| 欧美片第1页| 久久香蕉网站| 欧美日韩一区自拍| 亚洲天堂日韩在线| 裤袜国产欧美精品一区| 日韩福利视频导航| 久久先锋影音| 午夜精品网站| 久久视频一区| 日本午夜大片a在线观看| 国产精品对白| 欧美午夜三级| 综合在线一区| 午夜免费一区| 99久久激情| 亚洲综合在线电影| 国产中文在线播放| 福利一区二区三区视频在线观看| 国产图片一区| 亚洲精品观看| 丝瓜av网站精品一区二区| 精品一区在线| 91成人网在线观看| 免费av一区| 999久久久精品国产| 国产精品黑丝在线播放| 国产精品网址| 国产精品对白| 欧美激情三区| 久久精品免费看| 麻豆一区二区三区| 久久午夜影院| 开心激情综合| 久久久久亚洲精品中文字幕| 亚洲综合不卡| 丝袜美腿亚洲一区二区图片| 99国产精品久久久久久久| 不卡在线一区| 国产精品嫩草99av在线| 视频精品一区二区| 亚洲精品日本| 日本亚洲不卡| 国产精品一站二站| 成人片免费看| 欧美日韩在线二区| zzzwww在线看片免费| 国内精品伊人| 国产精品99一区二区三| 岛国av在线网站| 精品久久美女| 国产一区二区视频在线看| 亚洲黄色中文字幕| 神马久久午夜| 婷婷综合网站| 中文字幕一区二区三区四区久久| 日韩欧美在线精品| 国产精品巨作av| 国产在线观看www| 久久五月天小说| 美女日韩在线中文字幕| 日韩精品a在线观看91| 国产亚洲字幕| 国产精品二区不卡| av一区二区高清| 日韩中文av| 欧美黄页在线免费观看| 色偷偷色偷偷色偷偷在线视频| 久久久久国产| 视频一区视频二区中文字幕| 日韩av网站在线观看| 国产伊人久久| 黄色日韩精品| 欧美一级网址| 免费在线小视频| 亚洲一区不卡| 国产精品日本一区二区三区在线| 日韩中文在线电影| 一本综合精品| 久久久久亚洲精品中文字幕| 国内亚洲精品| 喷白浆一区二区| 国产精品男女| 久久精品二区三区| 日产欧产美韩系列久久99| 精品视频一二| 国产视频一区免费看| 国产精品三p一区二区| 日韩精品专区| 日本麻豆一区二区三区视频| 不卡福利视频| 一本色道久久精品| 欧美自拍一区| 91亚洲国产| 亚洲综合小说| 日韩精品dvd| 免费久久精品视频| 国产精品国产一区| 五月天激情综合网| 国产精品亚洲片在线播放| 婷婷综合在线| 牛牛精品成人免费视频| 欧美日韩国产综合网| 精品国产中文字幕第一页| 午夜精品一区二区三区国产| 国产精品香蕉| 在线视频日韩| 成人亚洲一区| 日韩国产在线一| 亚洲高清激情| 精品国产亚洲一区二区三区大结局 |