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

您的位置:首頁技術文章
文章詳情頁

JavaScript初學者容易犯的幾個錯誤

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

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

混淆 undefined 和 null

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

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

返回undefined的函數:

const f = () => {}

設置變量的值為undefined:

x = undefined;

判斷屬性是否為undefined:

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

判斷變量是否為undefined:

typeof x === ’undefined’

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

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

obj.prop === nullx === null

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

混淆數字相加和字符串拼接

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

let x = 1 + 1; // 2

結果是 2,是我們期望的數字相加操作,因為兩個值都是數字。

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

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

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

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

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

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

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

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

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

變量前面的 + 作用是將它轉換成數字,或者NaN,跟Number函數的作用相同。

return 語句換行問題

JavaScript 語法規定換行代表語句結束。例如:

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

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

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

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

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

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

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

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

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

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

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

用 return 跳出 forEach 循環

JavaScript 數組有個 forEach 方法,用于對數組元素進行循環操作。初學者很容易聯想到 for循環的break或continue關鍵字,用來中止循環。但是對不起,forEach沒有這兩個關鍵字。那用return行不行?可以用,但它的作用就是提前返回函數,跟continue的效果類似,用于結束本次循環。要跳出整個循環,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

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

總結

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

以上就是JavaScript初學者容易犯的幾個錯誤的詳細內容,更多關于JS的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩网址| 国产精品97| 久久在线视频免费观看| 国产成人精品三级高清久久91| 国产乱人伦精品一区| 欧美精品国产一区| 美女久久久久久| 久久久久免费| 国产精品magnet| 欧美极品一区二区三区| 精品一区不卡| 色综合www| 男女男精品视频网| 奇米777国产一区国产二区| 国产精品久久久久久妇女| 九九99久久精品在免费线bt| 国产传媒av在线| 99在线精品免费视频九九视| 午夜在线精品偷拍| 国产精品一区二区免费福利视频| 98精品久久久久久久| 久久精品国产亚洲夜色av网站| 夜久久久久久| 日本欧美韩国一区三区| 国产欧美一区二区三区国产幕精品 | 亚洲成人日韩| 亚洲精品欧美| 日本在线高清| 亚洲精品一级| 午夜av成人| 日欧美一区二区| 黑森林国产精品av| 蜜桃视频免费观看一区| 免费在线播放第一区高清av| 久久久噜噜噜| 日韩一区二区三区免费视频| 狠狠久久伊人| 亚洲精品婷婷| 午夜精品婷婷| 国产一二在线播放| 日韩久久99| 国产一区成人| 日韩欧美一区二区三区免费观看| 日韩avvvv在线播放| 伊人成人在线视频| av最新在线| 国产精品国码视频| 日日夜夜免费精品视频| 一本一本久久| 欧美男人天堂| 欧美日本三区| 日本亚洲视频在线| 红桃视频国产一区| 久久天堂成人| 欧美少妇精品| 高清不卡一区| 国产欧洲在线| 欧美13videosex性极品| 精品国产鲁一鲁****| 欧美极品一区二区三区| 国产精品久久久久久妇女| 日韩av一区二区在线影视| 伊人久久大香伊蕉在人线观看热v| 亚洲婷婷免费| 亚洲激情婷婷| 99视频精品视频高清免费| 精品国产黄a∨片高清在线| 欧美国产美女| 欧美日韩在线网站| 欧美国产91| 免费视频最近日韩| 亚洲啊v在线免费视频| 在线精品一区二区| 日韩二区在线观看| 国产精品日本一区二区三区在线 | 麻豆久久久久久久| 精品美女视频 | 国产成人精品福利| 成人欧美一区二区三区的电影| 国产一区二区三区日韩精品| 国产一区二区三区四区五区| 国产91在线播放精品| 日韩欧美1区| 日韩毛片视频| 日韩午夜一区| 综合激情网站| 国产欧美88| 91青青国产在线观看精品| 国产综合色区在线观看| 午夜视频精品| 久久www成人_看片免费不卡| 欧美91精品| 久久国内精品视频| 免费毛片在线不卡| 成人在线视频免费看| 久久久人人人| 无码日韩精品一区二区免费| 国产精品久久久网站| 欧美一区二区性| 国产日韩欧美三级| 国产专区一区| 精品三级在线观看视频| 99久久99久久精品国产片果冰| 国产精品白浆| 国产欧美日韩影院| 亚洲精品1区| 国产精品亚洲一区二区三区在线观看| 日韩欧美中文字幕在线视频| 亚洲综合在线电影| 九九久久国产| 国产精品色婷婷在线观看| 免费久久99精品国产| 麻豆91精品视频| 日韩和欧美一区二区| 日韩av午夜在线观看| 亚洲一二av| 蜜桃视频第一区免费观看| 性色av一区二区怡红| 欧美特黄一区| 午夜精品一区二区三区国产| 国产精品久久久久久久久妇女| 国产精品一区二区三区四区在线观看 | 国产精品一区免费在线| 日韩二区三区四区| 日韩欧美1区| 中文另类视频| 久久男人av资源站| 亚洲成人二区| 欧美 日韩 国产一区二区在线视频| 麻豆精品国产91久久久久久| 日韩成人av影视| 亚洲乱码视频| 中文日韩欧美| 美女久久一区| 四虎精品一区二区免费| 日韩国产欧美在线播放| 国产精品一二| 日韩综合在线| 91精品99| 国产劲爆久久| 久久精品国产www456c0m| xxxxx性欧美特大| 亚洲电影有码| 久久国产中文字幕| 久久精品青草| 亚洲深爱激情| 日韩精品一级中文字幕精品视频免费观看| 欧美精品日日操| 日韩在线免费| 亚洲黄色影院| 亚洲精品乱码| 91欧美极品| 精品精品久久| 久久视频国产| 视频在线观看91| 91麻豆精品| 久久99蜜桃| 亚洲一区资源| 亚洲综合二区| 国产一精品一av一免费爽爽| 久久精品亚洲| 亚洲激情黄色| 亚洲精品三级| 久久精品毛片| 99在线|亚洲一区二区| 日本午夜精品久久久| 日本一二区不卡| 九一国产精品| 国产精品一区二区免费福利视频| 激情视频网站在线播放色| 国产模特精品视频久久久久| 国产精品一区二区99| 亚洲爱爱视频| 国产精品欧美大片| 亚洲一本视频| 国产麻豆一区二区三区精品视频| 91精品韩国| 婷婷综合国产| 性欧美xxxx免费岛国不卡电影| 日本午夜精品久久久久| 99tv成人| 精品久久久中文字幕| 日韩毛片网站| 欧美日韩国产在线一区| 麻豆一区二区99久久久久| 免费看黄色91| 欧美.日韩.国产.一区.二区| 乱一区二区av| 91亚洲无吗| 亚洲综合婷婷| 日韩视频二区| 久久视频国产| а√天堂8资源在线| 久久国产三级精品| 婷婷久久免费视频| 男人的天堂久久精品| 日韩一级不卡| 三级欧美在线一区| 巨乳诱惑日韩免费av| 国产视频一区三区|