JavaScript菜鳥教程

JavaScript 對象

JavaScript 函數(shù)

JS HTML DOM

JS 瀏覽器BOM

AJAX 菜鳥教程

JavaScript 參考手冊

JavaScript 常見錯誤

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

通常,您應始終使用===也稱為嚴格相等運算符或相同運算符。

令人困惑的加法和串聯(lián)

從前面的章節(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"
測試看看?/?

錯誤使用float

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字符串換行

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);   // 這個輸出會是什么?
測試看看?/?

null和undefined之間的區(qū)別

undefined值指示尚未為變量分配值,或者根本沒有聲明變量。

null值表示故意不存在任何對象值。

這使得測試對象是否為空,變得有點困難。

可以通過測試類型是否undefined,來測試對象是否存在:

if (typeof myObj === "undefined")
測試看看?/?

    但是您無法測試對象是否為null,因為如果對象undefined,這將會拋出錯誤:

if (myObj === null)
測試看看?/?

要解決此問題,必須測試一個對象是否不是undefined,并且不是null

if (typeof myObj !== "undefined" && myObj !== null)
測試看看?/?
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清