JavaScript是當(dāng)今行業(yè)中最流行的編程語言之一。如果您想學(xué)習(xí)這種語言,請避免以下錯(cuò)誤。
如果我們不小心在if語句中使用賦值運(yùn)算符(=)而不是比較運(yùn)算符(==),則JavaScript程序可能會(huì)產(chǎn)生意外結(jié)果。
如果num不等于20,則此if語句返回false:
var num = 0; if (num == 20)測試看看?/?
此if語句返回true,因?yàn)?0為true:
var num = 0; if (num = 20)測試看看?/?
分配總是返回分配的值。
當(dāng)人們開始使用JavaScript時(shí),這可能是最常見的錯(cuò)誤。
在常規(guī)比較中,數(shù)據(jù)類型無關(guān)緊要。如果if語句返回true:
var a = 20; var b = "20"; if (a == b)測試看看?/?
在嚴(yán)格的比較中,數(shù)據(jù)類型確實(shí)很重要。此if語句返回false:
var a = 20; var b = "20"; if (a === b)測試看看?/?
(a ==b)和(a ===b)之間的區(qū)別是:
== 如果a等于b,則返回true
===如果a等于b,并且它們屬于同一類型,則返回true
通常,您應(yīng)始終使用===也稱為嚴(yán)格相等運(yùn)算符或相同運(yùn)算符。
從前面的章節(jié)中可以知道,+運(yùn)算符用于加法和串聯(lián)。
另外是關(guān)于添加數(shù)字。
串聯(lián)是關(guān)于添加字符串的。
因此,將數(shù)字添加為數(shù)字與將數(shù)字添加為字符串會(huì)產(chǎn)生不同的結(jié)果:
var a = 10; var b = 5; var c = a + b; // c = 15 var a = 10; var b = "5"; var c = a + b; // c = "105"測試看看?/?
JavaScript中的所有數(shù)字都存儲(chǔ)為64位浮點(diǎn)數(shù)(Floats)。
所有編程語言(包括JavaScript)在精確的浮點(diǎn)值上都有困難:
var a = 0.1; var b = 0.2; var c = a + b; // c的結(jié)果不會(huì)是 0.3測試看看?/?
為了解決上述問題,它有助于相乘和相除:
var c = (a * 10 + b * 10) / 10; // c = 0.3測試看看?/?
JavaScript將使您可以將語句分為兩行:
var str = "NHOOO Tutorial";測試看看?/?
但是,中斷字符串中間的語句將不起作用:
var str = "NHOOO Tutorial";測試看看?/?
如果必須中斷字符串中的語句,則必須使用“反斜杠”(轉(zhuǎn)義字符):
var str = "NHOOO \ Tutorial";測試看看?/?
另一個(gè)解決方案是使用模板字面量(反引號``)字符串。 這些消除了轉(zhuǎn)義長字符串的需要:
var str = `Air Pollution is introduction of chemicals to the atmosphere. It damages environmental balance and causes several diseases.`;測試看看?/?
由于分號放置錯(cuò)誤,無論num的值如何,都將執(zhí)行以下代碼:
if (num === 45); { // code block }測試看看?/?
對象和數(shù)組定義中的尾部逗號在ECMAScript 5中是合法的。
let fruits = ["Apple", "Mango", "Banana", "Orange",];//數(shù)組 let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//對象
然而,在數(shù)組結(jié)尾添加逗號,Internet Explorer 8將會(huì)崩潰。
JSON不允許尾隨逗號。
JavaScript不會(huì)為每個(gè)代碼塊創(chuàng)建新的作用域。
在許多編程語言中都適用,但在JavaScript中則不適用。
for (var i = 0; i < 10; i++) { // some code } document.write(i); // 這個(gè)輸出會(huì)是什么?測試看看?/?
使用let關(guān)鍵字為每個(gè)代碼塊創(chuàng)建一個(gè)新范圍:
for (let i = 0; i < 10; i++) { // some code } document.write(i); // 這個(gè)輸出會(huì)是什么?測試看看?/?
undefined值指示尚未為變量分配值,或者根本沒有聲明變量。
null值表示故意不存在任何對象值。
這使得測試對象是否為空,變得有點(diǎn)困難。
可以通過測試類型是否undefined,來測試對象是否存在:
if (typeof myObj === "undefined")測試看看?/?
但是您無法測試對象是否為null,因?yàn)槿绻麑ο?a href="http://www.jixiangtaizi.com.cn/jsref/global_undefined.html">undefined,這將會(huì)拋出錯(cuò)誤:
if (myObj === null)測試看看?/?
要解決此問題,必須測試一個(gè)對象是否不是undefined,并且不是null:
if (typeof myObj !== "undefined" && myObj !== null)測試看看?/?