Javascript高级程序设计第二版前三章--基本数据等--笔记

第一章.         JavaScript 简介

第二章.         JavaScriptHTML

--------今天开始跟诸位分享JavaScript高级程序设计第二版,第二遍阅读,第一章-第三章,基本数据。

 

JavaScript的历史就不多说,这里主要澄清一下它现在模糊而有强大的组成部分。说模糊是因为好多人对JS的真正的组成并不了解,说强大是因为这个语言的并不是像想象中的那么弱不禁风,而是非常之强大,强大到连语言创作者本身都没有想到能如此的强大。

自从1997年,javascript 1.1提交给ECMA(欧洲计算机制造商协会)以来,ECMAscript(ek ma script)一直是被视为javascript实现的基础,浏览器开发商致力于将ECMAScript作为各自JavaScript实现的基础,也在不同程度上取得了成功。这当中傲视群雄的当属FireFoxECMAscritp 262 已经有第四版了,但是第三版是各浏览器实现最多的一个版本。所以基本概念部分完全按照第3版定义的ECMAScript为最终标准。而实现ECMAscript的常见的有:javascript,actionscript,所以它们俩是亲兄弟。而完整的javascript则包括:核心js(ECMAScript),浏览器对象模型(BOM),文档对象模型(DOM)三部分。

DOM实现上浏览器也各有区别:

Opera 9+   1级,2(几乎全部)3(部分)

Safari 2+     1级,2(部分)

Chrome 0.2+ 1级,2(部分)

Firefox 1+     1级,2(几乎全部)3级部分

IE5.5-7       1(几乎全部)

第三章.         HTML中使用JavaScript

2.1 defer属性

作用:这个属性如被添加,则表示脚本会被延迟到整个页面都解析完毕后再运行

<script defer=”defer” scr=”xxx.js”></script>

      很遗憾这个属性只有ie,ff支持

2.2 <noscript>

表示当浏览器不支持JavaScript时让页面平衡的退化

<noscript>

         <p>本页面需要浏览器支持(启用)JavaScript

</noscript>

第三章. 基本概念

3.1 语法:

3.1.1标识符:就是指变量、函数、属性的名字,或者函数的参数。它只能以数字,下划线,美元符号开始的,后边的组成也只能是以数字,下划线,美元符号等。也可以是ASCIIUnicode,但不推荐。

3.1.2  js区分大小写

3.1.3 js注释:跟c语言java相似

唯一的一点是在aptana工具里边,能形成像JavaDoc一样的注释。

 /**

 * function add

 * @param {Object} a

 * @param {Object} b

 */

function add(a, b){

    return a+b;

}

3.1.4 语句:

可以省略分号结尾,但不推荐

3.2 关键字:

ECMAScript里边具有特定功能的单词组合叫关键字。它用于控制语句开始和结束,或用于执行特定操作。按照规则:关键字不能用于做标识符。

   break,else,new,var,case,finally

   保留字:将来留用的关键字。

   abstract,int,short,byte,boolean,goto,public

3.3 变量,

变量就是存储数据的一个内存块,与其它语言不同的是js的变量可以保存任何类型的数据。

         var msg;

         未初始化的会保存一特殊的值:undefined

         变量量如果省略var,则成为危险的全局变量

      3.4.1 typeof 操作符

         undefined, boolean,string,number,object,function

      3.4.2 Undefined类型

         这个类型只有一个值undefined

在使用变量之前未加以初始化时,这个变量的值就是undefined

3.4.3 Null类型

这个类型也只有一个值null。从逻辑角度看,null值表示一个空对象指针

如果定义的变量将来要存储对象,那最好将该变量初始化为null,这样直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用了。

         undefined 派生自null

         alert(null == undefined); // ouput true ==操作符出于比较的目的会转换其操作数 ===操作则不会

      3.4.4 Boolean 类型

只有两个值:true false 由于js区分大小写,trueTrue,falseFalse都不是一个值

3.4.5 Number类型

八进制以8为基数,(0)为始位。

十进制以10为基数,没有始位

十六进制以16为基数,(0x)为始位

1.       浮点数

浮点数计算会产生误差

0.2 + 0.3 != 0.5

浮点数最高精度是17位小数

2.       数值范围

由于内存的限制,js不能保存世上所有的值。最小值5e-324,最大值一长串,真没必须记忆。(1.797693e+308)。如果计算超过这两个值,则用Infinity(正无穷) –Infinity(负无穷)

3.       NaN(Not a Number)

是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。

有两个特点:

a). NaN的操作都会返回路径NaN

b). NaN与任何值都不相等,包括NaN本身

alert(NaN == NaN) // output false

isNaN() //这个函数帮我们确定这个参数是否“不是数值”

它接受到一个参数时,试图想转换为数值类型,转换不了则返回true

4.       数值转换:

a)         Number()

可以用于任何数据类型

后两个则专门用于把字符串转换成数值

1.         true 转换为1, false 转换为0

2.         null 转换为0

3.         如果字符串中包含有十六进制格式,则将其转换为相同大小的十进制整数值

b)         parseInt()

不会忽略前导零,会以八进制方式来解析

会自动识别八进制,十进制,十六进制

也可以提供第二个参数:转换时使用的基数(多少进制)

c)         parseFloat()

忽略前导零

没有第二个参数

      3.4.6 String类型

         用于表示零或多个16Unicode字符组成的字符序列。

字符串可用单引号(‘ ’),双引号(“ ”)来表示

1.       字符字面量

转义序列:\n 换行, \t 制表 \b 空格

2.       转换为字符串

a). tostring() 可以接受一个参数,表示基数

数值,布尔值,对象和字符串都有toString()方法

b). 可以使用转型函数String()

在不知道要转换的值是不是nullundefined的情况下,使用String();这个函数能将任何类型的值转换为字符串。

 

3.4.7 Object类型

js中的对象就是一组数据和功能的集合

a). constructor – 保存着用于创建当前对象的函数

b). hasOwnProperty(propertyName) – 用于检查给家的属性在当前对象实例中(而不是在实例的原型中)是否存在

var o = new Object(); //没有参数()可以省略

o.hasOwnProperty(‘name’);

c). isPrototypeOf(object) – 用于检查传入的对象连接是否是另一个对象的原型

d). propertyIsEnumerable(propertyName) – 用于检查给定的属性是否能够使用for-in语句来枚举。

e). toString(), valueOf()

      3.5 操作符

      3.5.1 一元操作符

         递增递减操作符

         var age = 29;

         ++age; //先加后使用

         var anotherAge = age + 2; // 32;

 

         age++ //先使用后加

         var num1 = 2;

         var num2 = 20;

         var num3 = num1-- + num2; //22

         var num4 = num + num2; //21

      3.5.2 位操作符

         // 用的不多,等回头有空在补上

1.       按拉非

var num1 = 25 //二进制00000000000000000000000000011001

var num2 = ~num1 //二进制 11111111111111111111111111111110

alert(num2) // -26

2.       按位与 &

3.       按位或 |

4.       按位异或 ^

5.       按位左移 <<

6.       有符号右移 >>

7.       无符号右移 >>>

3.5.3 布尔操作符

1. 逻辑非 !

2. 逻辑与 &&

3. 逻辑或 ||

3.5.4 乘性操作符

1. 乘法 *

2. 除法 /

3. 求模(余数) %

3.5.5 加性操作符

3.5.6 关系操作符

a)         如果两个操作数是数值,则执行数值比较

b)         如果两个操作数是字符串,则比较两个字符串对应的字符编码值

c)         如果一个操作数是数值,则将另一个操作数转换为一个数值,然后进行比较

d)         如果一个操作数是对象,则调用这个对象的valueOf()方法,用得到的结果按照前面的规则执行比较。如果对象没有valueOf()方法,则调用toString()方法,并用得到的结果根据前面的规则执行比较

e)         如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较

3.5.7 相等操作符

相等和不相等(==):先转换再比较

全等和不全等(===):仅比较而不转换

3.5.8 条件操作符

var max = (num1 > num2) ? num1 : num2

3.5.9 赋值操作符

var a = ‘豪情’;

3.5.10 逗号操作符

var num = (4,5,1); //num 1;

        

6. 操作符:

   加减操作符:

   var age = 29;

   ++age;//先加后使用

   相当于age = age + 1;

 

   var age = 29;

   age++;//先使用后加

  

   还有其它乖除等等  

3.6 语句

3.6.1 if语句

3.6.2 do-while语句

         在对条件表达式求值之前,循环体内的代码至少会执行一次

3.6.3 while语句

3.6.4 for语句

3.6.5 for-in语句

for-in语句是一种精准的迭代语句,用来枚举对象的属性。

for(var pro in window){

         document.write(pro + ‘<br>’);

}

3.6.6 label语句

3.6.7 break,continue语句

1.         break 语句会立即退出循环,强制继续执行循环后面的语句

2.         continue 退出本次循环后从循环的顶部继续执行下一次循环

3.6.8 with语句

         虽然能延续作用域,但是效率不高,不推荐使用

3.6.9 switch语句

3.7 函数

arguments 是一个类数组,有数组的特性,可以用下标访问,有长度,但它不是数组对象的实例。

函数没有重载,只有覆盖,不像Java,倒像css

如果定义两个相同函数的名字,只会执行后定义的函数。

posted @ 2010-09-04 13:03  豪情  阅读(1984)  评论(2编辑  收藏  举报