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