title | date |
---|---|
JavaScript之毒瘤 |
2017/02/21 14:47:10 |
JavaScript中有许多难以避免的问题特性。接下来就一一揭示。
在所有JavaScript的糟糕特性中,最为糟糕的就是全局变量的依赖。全局变量使得在同一个程序中运行独立的子程序变得更难。
JavaScript是类C的语法,但是却没有提供类C的块级作用域。
JavaScript有一个自动修复机制,会试图通过自动插入分号来修正有缺损的程序,但是它有可能掩盖更为严重的错误。
有太多的单词在JavaScript中被保留,它们不能用来命名变量或者函数(在大部分执行环境下,部分关键字是可用的)。
JavaScript设计之初,Unicode预计只会有65536个字符。实际上,到现在Unicode有多大百万个字符。这也就导致了JavaScript会认为一对字符是两个不同的字符(Unicode把一对字符视为一个单一的字符)
不要指望typeof返回的类型。比如null或者是检测对象,另外检测正则可能会返回function或者是object。
parseInt把一个字符串转换为整数,会在遇到非数字时停止解析。另外如果第一个字符是0,还会按照8进制来取值。
+运算符可以用于加法运算或者是字符串连接,究竟如何执行会取决于其参数类型。
二进制浮点数不能正确的处理十进制小数,因此0.1+0.2 不等于0.3。
NaN是一个特殊的数量值,它表示不是一个数字。也是唯一一个不等于自身的JavaScript数值。
JavaScript没有真正的数组,就连Array也是通过object来模拟的,如果完全达不到真正的数组的地步。同时typeof运算符也不能辨别数组和对象。
JavaScript中包含诸多的假值,如: 0, NaN, '', false, null, undefined
hasOwnProperty方法被用做一个过滤器来避开for..in语句的隐患,但hasOwnProperty是一个普通的方法,所以是可以被重写的。
JavaScript的对象,永远不会是真的空对象,因为可以从原形链取得成员属性。