JavaScript菜鸟教程

JavaScript 对象

JavaScript 函数

JS HTML DOM

JS 浏览器BOM

AJAX 菜鸟教程

JavaScript 参考手册

JavaScript 常见错误

JavaScript是当今行业中最流行的编程语言之一。如果您想学习这种语言,请避免以下错误。

意外使用赋值运算符

如果我们不小心在if语句中使用赋值运算符(=)而不是比较运算符(==),则JavaScript程序可能会产生意外结果。

如果num不等于20,则此if语句返回false:

var num = 0;
if (num == 20)
测试看看‹/›

此if语句返回true,因为20为true:

var num = 0;
if (num = 20)
测试看看‹/›

分配总是返回分配的值。

使用“ ==”代替“ ===”

当人们开始使用JavaScript时,这可能是最常见的错误。

在常规比较中,数据类型无关紧要。如果if语句返回true:

var a = 20;
var b = "20";
if (a == b)
测试看看‹/›

在严格的比较中,数据类型确实很重要。此if语句返回false:

var a = 20;
var b = "20";
if (a === b)
测试看看‹/›

(a ==b)和(a ===b)之间的区别是:

  • == 如果a等于b,则返回true

  • ===如果a等于b,并且它们属于同一类型,则返回true

通常,您应始终使用===也称为严格相等运算符或相同运算符。

令人困惑的加法和串联

从前面的章节中可以知道,+运算符用于加法和串联。

另外是关于添加数字

串联是关于添加字符串的

因此,将数字添加为数字与将数字添加为字符串会产生不同的结果:

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中的所有数字都存储为64位浮点数(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的值如何,都将执行以下代码:

if (num === 45);
{
  // code block  
}
测试看看‹/›

以逗号结尾的定义

对象和数组定义中的尾部逗号在ECMAScript 5中是合法的。

let fruits = ["Apple", "Mango", "Banana", "Orange",];//数组
let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//对象

然而,在数组结尾添加逗号,Internet Explorer 8将会崩溃。

JSON不允许尾随逗号。

块级作用域

JavaScript不会为每个代码块创建新的作用域。

在许多编程语言中都适用,但在JavaScript中则不适用。

for (var i = 0; i < 10; i++) {
  // some code
}
document.write(i);   // 这个输出会是什么?
测试看看‹/›

使用let关键字为每个代码块创建一个新范围:

for (let i = 0; i < 10; i++) {
  // some code
}
document.write(i);   // 这个输出会是什么?
测试看看‹/›

null和undefined之间的区别

undefined值指示尚未为变量分配值,或者根本没有声明变量。

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

这使得测试对象是否为空,变得有点困难。

可以通过测试类型是否undefined,来测试对象是否存在:

if (typeof myObj === "undefined")
测试看看‹/›

    但是您无法测试对象是否为null,因为如果对象undefined,这将会抛出错误:

if (myObj === null)
测试看看‹/›

要解决此问题,必须测试一个对象是否不是undefined,并且不是null

if (typeof myObj !== "undefined" && myObj !== null)
测试看看‹/›