- 使用严格比较运算符
===
和!==
,避免==
和!=
,它们允许类型转换。 - 布尔型值仅有
true
和false
两种可能。
数字
- 区分整数和浮点数,整数不带小数点。
- 使用
Number()
函数将字符串转换为数字。 - 注意数字可能超出安全的范围(-9007199254740991 和 9007199254740991)。
字符串
- 使用单引号或双引号括起字符串。
- 转义特殊字符,如
"
(双引号)。 - 使用字符串方法来操作字符串,如
slice()
、indexOf()
和replace()
。
数组
- 数组是一个有序的元素集合。
- 元素可以是任何类型,包括其他数组。
- 使用
length
属性获取数组中元素的数量。
对象
- 对象是一个无序的键值对集合。
- 键和值可以是任何类型。
- 使用点运算符(
.
)或方括号([]
)访问对象属性。
null 和 undefined
null
表示一个有意分配的空值。undefined
表示一个尚未赋值或不存在的变量。- 不要将
null
与undefined
混淆。
特殊值
NaN
(非数字值)表示一个无效的数字。Infinity
和-Infinity
表示正负无穷大。
常见陷阱
- 类型转换陷阱:比较不同类型的值时,JavaScript 会进行自动类型转换,导致意外结果。
- 空值陷阱:
null
、undefined
和空字符串(""
)被认为是假值,这可能导致逻辑错误。 - 数组变异陷阱:数组方法会改变原始数组,这可能会导致无意中的副作用。
- 对象引用陷阱:对象是通过引用传递的,修改对象的属性会影响原始对象,即使它存储在一个不同的变量中。
- NaN 陷阱:比较
NaN
时总是返回false
,因为NaN
不等于自身。
最佳实践
- 使用严格模式 (
"use strict";
) 启用更严格的类型检查。 - 通过类型检查函数(如
typeof()
) 验证数据类型。 - 为变量使用适当的数据类型。
- 小心使用数组方法和对象引用。
- 了解特殊值的含义和用途。
- 通过测试和代码审查避免陷阱。