1. <script>元素属性:charset,defer,src,type.用script标签链入外部javascript文件时,浏览器不会检查文件的扩展名,所以这个扩展名不是必须的,使用服务器端语言生成javascript代码成为可能。script的src属性还可以包含来自外部域的javascript文件。如果一个页面有多个script标签,浏览器会挨个挨个解析执行。
2.把javascript文件在head标签链入的一个缺点是页面的内容必须等javascript代码解析执行完才开始呈现(遇到body标签才开始呈现)。现在流行的做法是把javascript放在body的最后。如果放在head标签中,然后用script的defer属性,也是相同的效果,但是现在并非所有的浏览器都支持defer属性。
3.兼容HTML和XHTML的script用法:
<script type="text/javascript"> //<![CDATA[ function test(){} //]] </script>
4.文档模式
1)标准模式
<!-- HTML 4.01 严格型 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <!-- XHTML 1.0 严格型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1-strict.dtd">2)准标准模式
<!-- HTML 4.01 过渡型 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <!-- HTML 4.01 框架集型 --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <!-- XHTML 1.0 过渡型 --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- XHTML 1.0 框架集型 --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5.<noscript>在浏览器不支持javascript的时候显示替代内容。
6.包含undefined值得变量与尚未声明的变量是不一样的。对尚未声明的变量只能执行一项操作,就是使用typeof。
7.如果定义的变量准备将来用于保存对象,最好把它初始化为null,而不是其它值。
8.undefined派生自null。
9.Boolean的字面值true和false是区分大小写的。
10.数值字面量中,对于八进制数,如果字面值中的数字超过了范围,那么前导零将被忽略,被解析为十进制数值。虽然数值可以用八进制和十六进制表示,但是进行算术计算时,都会转为十进制数值。
11.默认情况下,ECMAScript会把那些小数点后有6个零以上的浮点数转换为科学计数法。浮点数值的最高精度是17为小数,但进行算术计算式,其精确度远远不如整数。
12.数值的范围:ECMAScript能表示的最小的数值保存在Number.MIN_VALUE,在大多数浏览器中,为5e-324,最大值保存在Number.MAX_VALUE,大多数浏览器中,其值大约为1.7977e+308。如果在计算中超过数值范围,会自动转换为Infinity或者-Infinity。判断一个数是否在最大值与最小值之间,也就是有穷的,用isFinite();13.isNaN()接到一个参数后,会尝试将该参数转换为数值。将object对象转为数值会调用它的valueOf方法,如果该方法调用后不能返回数值,将再调用它的toString()方法。
14.Number()可以用于任何数据类型,而parseInt(),parstFloat()专门用于字符串。
Number()的转换规则:
1)Boolean值:true和false分别转换为1和0。
2)数值,简单的传入传出。
3)null,返回0
4)undefined,返回NaN
5)字符串,注意点:a.忽略前导零,这点与parseInt不同,parseInt会前导零认为是八进制数字的开始。b.对于空串,这个返回0,而parseInt则返回NaN
6)对象,尝试调用它的valueOf,如果返回的不是数值而是NaN,继续尝试调用toString()方法,然后按照前面的规则转换。
15.parseInt(),与Number有些类似,但对于空串处理不同。可以提供第二个参数,第二个参数为基数。建议无论什么情况下都指定基数。
16.parseFloat(),与parseInt()类似,但没有基数,而且会忽略前导零,并且只有第一个小数点有效,第二个小数点之后会被忽略掉。
17.数值、布尔值、对象和字符串值都有一个toString()方法,但null和undefined值没有这个方法。数值的toString方法可以传入一个基数。String()函数对于有toString()方法的类型,将调用该方法并返回。如果是null或者undefined则返回"null"或者"undefined"。
18.对于没有参数的构造器,新建对象时可以省略(),例如 var o = new Object;但是不推荐。
19.Object实例拥有的一些方法:
1,constructor,
2,hasOwnProperty(propertyName)
3,isPrototypeOf(object)
4,propertyIsEnumerable(propertyName)是否能用for..in列举。
5,toString()
6,valueOf()
IE的javascript实现对象有些不同,只有开发人员定义的对象才继承自Object.
20.递增递减操作符应用于字符串、布尔值、对象的变量时时,这些变量最后都会转为数值变量
21.一元加减操作应用于非数值,遵循的规则与递增递减类似。
22.对NaN和Infinty值应用位操作时,这两个都会被当成0来处理。如果对非数值应用位操作符,会先使用Number()函数将该值转换为一个数值,再应用位操作。
23.按位非操作的本质:操作数的负值减1.左移不会影响操作数的符号位,不分有符号左移和无符号左移,出现空位用0填充。有符号的右移的过程中,出现空位,空位在原数值的左侧,在符号位的右侧(符号位不移动),用符号位填充空位。无符号位的右移(>>>)会连同符号位一起移动,空位用0填充,无符号位的右移与有符号位的右移在负数上不同。
24.布尔操作符,可以用于ECMAScript中的任何值。对于对象、非空字符串、非零数值包括Infinity返回false,对于空字符串、0、null、NaN、undefined返回true。
25.逻辑与&&的规则:把第一个操作数转换为布尔值,如果是false,返回该操作数,如果是true,返回第二个操作数。
26.逻辑或||的规则:把第二个操作数转为布尔值,如果是false,返回第二个操作数,否则返回第一个操作数。
27.乘性操作,如果某个操作数不是数值,会使用Number()转型函数将其转换为数值。在处理特殊值的时候,乘法操作符遵循下列特殊的规则:
1,如果操作数都是数值,乘积超过ECMAScript数值的表示范围,则返回正无穷或负无穷,即Infinity或-Infinity。
2,如果有一个是NaN,返回NaN。
3,Infinity与0相乘返回NaN。
4,Infinity与非0数值相乘,返回正无穷或者负无穷,取决于数值的符号。
5,如果有个操作数不是数值,在后台调用Number()转换为数值,再调用上面的规则。
28.除法操作,与乘法类似,注意几点:NaN参与运算返回NaN;Infinity被任意数值除,返回Infinity;0被0除返回NaN;Infinity被Infinity除,返回NaN。
29.求模操作,记得结果要么是正常的余数,要么是NaN,要么是被除数。
30.