JavaScript乐子大全
这篇博文旨在为罗列js让人无语的特性。如果某天你在写代码时出现了令人费解的错误,或许你能在这里找到答案。
使用JavaScript
- 由于没有BOM的标准可供遵守,因此每个浏览器的实现可能不尽相同,也就是说,同一个功能的函数可能在两个不同的浏览器中名称不同
- js的版本情况大多数情况下取决于浏览器
- HTML5的默认脚本语言是JavaScript
- 带有src属性的script中不应该在添加代码,会被忽略
- 把script tag放在
<head>
中可能会导致错误(准确来说,当你的script操作DOM但是却在DOM上面时,浏览器可能会先执行script再加载DOM,script找不到DOM当然会出错) - 在XHTML中,js中的小于号会被当做tag的开头
- 如果某些上古代码在script代码两端加入HTML的注释,那可能是怕浏览器无法解析script……
- 我在这篇推文中会尽量少用
<script>
,因为会被markdown解析成脚本标签……
JavaScript语法
- 可以用拓展的unicode字母来用作变量名,比如Ã,Ç,如果你有同事,不建议你这么做
- 通过
"use strict"
来开启严格模式,严格模式下JavaScript的执行结果可能和你熟悉的JavaScript大不相同 - 如果省略分号,则由解析器确定语句结尾
- 虽然js不是强类型语言,但是
boolen,byte,short,int,long,float,double,char
都是js的保留字 - 如果一个变量你不定义就使用,那它会成为一个全局变量(这是非常危险的行为)
JavaScript数据类型
- 未经初始化的默认值是undefined
- 对未声明的变量的类型也是undefined
- null的类型是object
null==undefined //true
- 八进制字面值在严格模式下是无效的
0.1+0.2=0.30000000000000004
以此类推NaN != NaN //NaN不等于任何值
- NaN的类型是Number
- 在ECMAScript 5中,parseInt已经不能解析parseInt
- null和undefined没有toString方法,对他们使用toString会返回这两个值的字面量