# JavaScript 常见语法
# 1. 相等
隐式类型转换:
'' == 0; // true
在 TS 中,不同类型的数据的比较,==
、===
都会报错
对象类型数据的比较:
- 使用 deep-equal 包
- 业务中,通常比较 id 属性即可
# 2. null 和 undefined
作用:
- undefined: 变量没有初始化
- null: 变量不可用
比较:
null == undefined; // true
if (foo != null) { // 排除 null 和 undefined
// ...
}
检查变量是否定义:
if (typeof someGlobal !== 'undefined') {
// ...
}
不要显式使用 undefined:
function foo() {
if (/* ... */) {
return { a: 1 }
} else {
return { a: undefined }
}
}
function foo(): { a?: number } {
if (/* ... */) {
return { a: 1 }
} else {
return {}
}
}
JSON 和 序列化:
JSON 支持 null,但不支持 undefined
// 属性值为 undefined 的属性,在序列化后会被删除掉 JSON.stringify({ a: null, b: undefined }); // '{"a":null}'
将属性值设置为 null 再传输给远程服务器,表达清除属性的意图
# 3. 数字
十进制:
二进制数据不能正确映射到十进制的问题:
0.1 + 0.2; // 0.30000000000000004
big.js
- 完美的十进制运算
- 超出整数值的安全计算
NaN:
表示一个计算出来的数字不是一个有效数字
Math.sqrt(-1); // NaN NaN == NaN; // false NaN === NaN; // false Number.isNaN(NaN); // true
# 4. truthy
变量类型 | falsy | truthy |
---|---|---|
boolean | false | true |
string | '' (空串) | 其他 |
number | 0 和 NaN | 其他 |
null | 总是 | 从不 |
undefined | 总是 | 从不 |
对象 | 从不 | 总是 |
上一篇: 下一篇:
本章目录