尽管我们对 JavaScript 已经相当熟悉了,但这门语言中仍存在许多有趣的特性和行为,今天分享 12 个鲜为人知的 JavaScript 冷知识。
1. 函数的长度属性
你可能知道数组有 length 属性,但函数也有!函数的 length 属性返回函数期望的参数个数(形参数量)。
这个特性在编写高阶函数或函数式编程时特别有用,可以用来进行函数的参数匹配。
2. void 运算符不只是不返回值
void 运算符不仅可以用来确保表达式不返回值,还可以用来解决一些特殊问题:
3. Function.prototype.toString() 的变化
ES2019 之后,Function.prototype.toString() 会保留函数的原始格式,包括注释和空格:
4. 逗号运算符的隐藏用途
逗号运算符可以在一些意想不到的地方使用,比如箭头函数或三元运算符中:
5. 可选链操作符的隐藏技巧
可选链操作符不仅可以用于对象属性,还可以用于函数调用和数组:
6. Symbol.asyncIterator 的妙用
你可以使用 Symbol.asyncIterator 创建自定义的异步迭代器:
7. 利用 Object.defineProperty 创建常量对象
你可以创建真正的常量对象,其属性完全不可修改:
8. Label 语句的妙用
JavaScript 中的 label 语句虽然不常见,但在特定场景下非常有用,特别是在嵌套循环中:
9. 使用 Proxy 实现私有属性
在类私有字段还未普及之前,可以使用 Proxy 来模拟私有属性:
10. 利用 Generator 实现范围数据类型
JavaScript 没有原生的范围类型,但我们可以用 Generator 实现:
11. BigInt 的特殊行为
BigInt 有一些出人意料的行为:
12. Intl API 的强大功能
Intl API 不仅可以用于格式化日期和数字,还有很多强大的功能: