实例
var x = "Bill";
var y = new String("Bill");
(x === y) // 结果为 false,因为 x 是字符串,而 y 是对象。
亲自试一试
或者甚至更糟:
实例
var x = new String("Bill");
var y = new String("Bill");
(x == y) // 结果是 false,因为你无法比较对象。
亲自试一试
请勿使用 new Object()
请使用 {} 来代替 new Object()
请使用 "" 来代替 new String()
请使用 0 来代替 new Number()
请使用 false 来代替 new Boolean()
请使用 [] 来代替 new Array()
请使用 /()/ 来代替 new RegExp()
请使用 function (){}来代替 new Function()
实例
var x1 = {}; // 新对象
var x2 = ""; // 新的原始字符串值
var x3 = 0; // 新的原始数值
var x4 = false; // 新的原始布尔值
var x5 = []; // 新的数组对象
var x6 = /()/; // 新的正则表达式
var x7 = function(){}; // 新的函数对象
亲自试一试
意识到自动类型转换
请意识到数值会被意外转换为字符串或 NaN(Not a Number)。
JavaScript 属于松散类型。变量可包含不同的数据类型,并且变量能够改变其数据类型:
实例
var x = "Hello"; // typeof x 为字符串
x = 5; // 把 typeof x 更改为数值
亲自试一试
如果进行数学运算,JavaScript 能够将数值转换为字符串:
实例
var x = 5 + 7; // x.valueOf() 是 12, typeof x 是数值
var x = 5 + "7"; // x.valueOf() 是 57, typeof x 是字符串
var x = "5" + 7; // x.valueOf() 是 57, typeof x 是字符串
var x = 5 - 7; // x.valueOf() 是 -2, typeof x 是数值
var x = 5 - "7"; // x.valueOf() 是 -2, typeof x 是数值
var x = "5" - 7; // x.valueOf() 是 -2, typeof x 是数值
var x = 5 - "x"; // x.valueOf() 是 NaN, typeof x 是数值
亲自试一试
用字符串减去字符串,不会产生错误而是返回 NaN(Not a Number):
实例
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
day = "Unknown";
}
亲自试一试
避免使用 eval()
eval() 函数用于将文本作为代码来允许。在几乎所有情况下,都没有必要使用它。