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

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

本文内容是关于《JavaScriptt高级程序设计(第三版)》的读书笔记,而且只是提取个人认为每个章节比较重要或者需要注意的知识点。

 

第一章   JavaScript简介

1.      一个完整的JavaScipt实现是有三个不同的部分组成的

1.1    核心(ECMAScript)

由ECMA-262定义,提供核心语言功能;它规定这门语言的组成部分,包括语法、类型、语句、关键字、保留字、操作符和对象。ECMAScript就是对实现该标准规定的各个方面内容的描述。

1.2    文档对象模型(DOM)

DOM把整个页面映射为一个多层节点的结构,如下面所示

 

<html>

    <head>

      <title>

                     Test!

     </title>

   </head>

    <body>

   </body>

</html>               

 

上面代码会被映射成多层节点的结构

 

  

 


               文档对象模型(DOM)提供访问和操作网页内容的方法和接口

 

 

 

1.3    浏览器对象模型(BOM)

BOM提供与浏览器交互的方法和接口。

      

 

 

第二章   在HTML中使用JavaScript

 

1.      <script>元素的属性

使用defer属性可以让脚本在文档完全呈现之后再执行。延迟脚本总是按照指定它们的顺序执行。

使用asymc属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档的呈现。不能保证异步脚本按照它们的页面中出现的顺序执行。

在不使用上面两个属性时,浏览器会先解析<script>元素中的代码,然后在解析后面的内容。

   

第三章   基本概念

 

1.      数据类型

ECMAScript有5种简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String。还有一个复杂的数据类型Object。

2.      变量

注意的是,如果在函数中定义变量省略了var操作符,那么该变量是一个全局变量。

3.      操作符

3.1   位操作符

ECMAScript中的所有数值都以IEEE-754 64位格式存储,但未操作符并不直接操作64位的值。而是先将64位的值转换成32位的整数,然后在执行操作,最后再将结果转换成64位。

对于有符号的整数,32位中的前31位用于表示整数的值,第32位是符号位,0表示正数,1表示负数,31位中的每一位都表示2的幂。

 

eg:数值16的的二进制表示为00000000000000000000000000010000

或者更简洁的10000

1

0

0

0

0

(2^4)*1    +   (2^3)*0  +   (2^2)*0   +  (2^1)*0  +   (2^0)*0

16

0

0

0

0

 

负数以二进制存储时,使用的是二进制的补码,而计算一个数值的二进制补码一般有三个步骤

(1)    求该值绝对值的二进制码;

(2)    求二进制反码,即1变成0,0变成1;

(3)    得到的二进制反码再加1。

如下列用以上三个步骤得到-16的二进制码

(1)    转换成16的二进制码

0000 0000 0000 0000 0000 0000 0001 0000

(2)    然后求其反码

1111 1111 1111 1111 1111 1111 1110 1111

(3)    最后反码加1

1111 1111 1111 1111 1111 1111 1110 1111

                                                                                 1

——————————————————

1111 1111 1111 1111 1111 1111 1111 0000

 

即获得-16的二进制码是1111 1111 1111 1111 1111 1111 1111 0000

 

3.1.1         按位非(NOT)

按位非操作符有一个波浪线(~)表示,按位非的结果就是返回数值的反码

3.1.2         按位与(AND)

按位与操作符由一个和号字符(&)表示,按位与操作就是两个数值的对应位都是1时才返回1,任何一位是0,结果都是0

 

简单的例子  8&3

9 = 0000 0000 0000 0000 0000 0000 00001001

3 = 0000 0000 0000 0000 0000 0000 00000011

---------------------------------------------------------------

AND = 0000 0000 0000 0000 0000 00000000 0001

 

3.1.3         按位或(OR)

按位或操作是由一个竖线符号(|)表示,同样也有两个操作数

和按位与不同的是,按位或操作只要有一位是1的情况下都会返回1,而只有在两个位都是0的情况下才返回0

 

3.1.4         按位异或(XOR)

按位异或操作符有一个插入符号(^)表示,也有两个操作数。

这个操作在两个数值对应位上只有一个1是才返回1,如果对应的两位都是1或者都是0,则返回0。

3.1.5         左移

左移操作符有两个小于号(<<)表示,这个操作符会将数值的所有位向左移动指定的位数

简单例子:将数值3(二进制码为11)向左移5位

注意:在向左移位后,原数值的右侧多出了5个空位。左移操作会以0来填充这些空位,以便得到的结果是完整的32位二进制

数值3

0000 0000 0000 0000 0000 0000 0000 0011

 

将数值3向左移5位(得到96)

0000 0000 0000 0000 0000 0000 0110 0000

右侧空余的5位,以0来填充

3.1.6         有符号的右移

有符号的右移操作符是由两个大于号(>>)表示,这个操作符会将数值向右移,但保留符号位;右移后,左侧空出的位置会用符号位的值来填充所有的空位

3.1.7         无符号右移

无符号右移操作符是由3个大于号(>>>)表示,对于正数来说,无符号右移的结果和有符号右移的结果是一样的;但是对负数来说,无符号右移是以0来填充空位,而不是像有符号右移那样以符号位的值来填充空位。

4.      With语句

with语句的作用是将代码的作用域设置到一个特定的对象中

with语句的语法如下:

with(expression) statement

定义with语句的目的主要是为了简化多次编写同一个对象的工作,如下面的例子所示

var q =location.search.substring(1);

var name =location.name;

var url =location.href;

上面的几行代码都包含了location对象。如果使用with语句,可以写成

with(locaiton){

        var q = search.substring(1);

      varname = name;

        var url = href;

}

在这个重写后的例子中,使用with语句关联了location对象,意味着在with语句的代码块内部,每个变量首先被认为是一个局部变量,而如果在局部环境中找不到该变量的定义,就会查询location对象中是否有同名的属性。如果发现了同名属性,则以location对象属性的值作为变量的值。

注意的是,在严格模式下不允许使用with语句,否则将视为语法错误(不建议使用with语句,因为由于大量使用with语句会导致性能下降,同时也会给调试代码造成困难)

 

5.      函数

ECMAScript函数不能实现重载

 

 

  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值