Javascript高级程序设计第三章知识总结

时间:2021-06-23 10:20:45

原文地址点击打开链接

第三章基本概念

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

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