On JavaScript's Weirdness
a year ago
- #JavaScript
- #Programming Quirks
- #ECMAScript
- JavaScript的`eval`函数在被重命名时表现不同,由于ECMAScript规范中的特殊规定,它只能访问全局作用域而非当前作用域。
- JavaScript循环在变量捕获方面表现出独特行为:循环头中定义的变量会被视为按值捕获,而外部定义的变量则按引用捕获。
- JavaScript中存在一个假值对象`document.all`,这是ECMAScript标准为保持与旧版IE代码兼容而特别规定的。
- JavaScript字符串迭代会因采用UTF-16编码单元、Unicode码位、显示字符或扩展字素簇等不同计数方式而产生差异结果。
- 通过省略元素或使用`Array`构造函数创建的稀疏数组,可能导致数组方法出现意外行为且性能较差。
- JavaScript的自动分号插入机制(ASI)可能引发代码意外解析,典型示例是缺失分号会导致代码行为改变。