编辑这个页面须要登录或更高权限!
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"测试看看‹/›
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将使您可以将语句分为两行:
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); // 这个输出会是什么?测试看看‹/›
undefined值指示尚未为变量分配值,或者根本没有声明变量。
null值表示故意不存在任何对象值。
这使得测试对象是否为空,变得有点困难。
可以通过测试类型是否undefined,来测试对象是否存在:
if (typeof myObj === "undefined")测试看看‹/›
但是您无法测试对象是否为null,因为如果对象undefined,这将会抛出错误:
if (myObj === null)测试看看‹/›
要解决此问题,必须测试一个对象是否不是undefined,并且不是null:
if (typeof myObj !== "undefined" && myObj !== null)测试看看‹/›