《JavaScript高级程序设计(第2版)》读书笔记

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.

 




 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值