javascript高级程序设计笔记(二)

day 02

操作符
1,对非数值应用一元操作符时,该操作对象会像Number()转型函数一样对该数值进行转换。
2,不能在逻辑与上操作未定义的值
3,可以利用逻辑或来避免为变量赋null或undefined值。如下:
var m = pre || bac ;
在上述例子中,变量m将被赋予等号后面两个值中的一个,pre将优先赋给m,bac变量负责在pre中不包含有效值的情况下提供后备值。如果pre的值不是null,那么将赋给m,如果为null,则将bac赋给m。
4,任何操作数与NaN进行关系比较,结果都是false,于是,有以下有意思的现象: 
var result = NaN < 3; //false
var result = NaN >=3; //false

5,每个主要算术操作符都有对应的复合赋值操作符,如

 乘/赋值 *= 
除/赋值 /= 
加/赋值  +=
等等,设计这些操作符的主要目的就是简化赋值操作,使用它们不会带来任何性能的提升。
6,逗号运算符用于赋值时,总会返回表达式中的最后一项,如下:
var num = (4,23,5,2,6);
由于6是表达式中的最后一项,因此num的值就是6。
语句
switch

switch语句可以使用任何数据类型,无论是字符串,还是对象都没有问题。switch语句在比较值时使用的是全等操作符(如 ===),因此不会发生类型转换(如字符串“10”不等于数值10)

函数
理解参数
ECMAScript函数没有重载(不存在函数签名),可以模仿

1,ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型。就是说,即便定义的函数只接收两个参数,在调用这个函数时也未必一定要传入两个参数。可以传多个或者不传。因为ECMAScript函数参数在内部是用一个数组来表示的,函数接收的始终是这个数组,而不关心数组中包含哪些参数(如果有),实际上,可以通过arguments对象(不是Array的实例)来访问这个参数数组。如下:
function sayhi(){
  alert("hello " +arguments[0] + ",  "+ arguments[1]);
}
 function test(){
  sayhi("test1","test2")
}
调用test函数,弹出 “hello test1, test2”。
通过访问arguments对象的length属性可以获知有多少个参数传递给了函数,利用这点,开发的时候可以接收任意个参数分别实现适当的功能,如下:
function doAdd(){
   if(arguments.length ==1)
 {
     alert(arguments[0] + 10);
 } else if(arguments.length == 2)
 {
     alert(arguments[0] +arguments[1]);
 }
}

doAdd(10);//弹出20;
doAdd(30,20;//弹出50

除此之外,arguments对象可以与命名参数一起使用。num1(第一个命名参数)与arguments[0]的值相同,可以互换使用,并且永远与对应命名参数的值保持同步。如下:

function doAdd(num1,num2){
	arguments[1] = 10;
        alert(arguments[0] + num2);//11
}
doAdd(1,2);

函数在定义时可以没有返回值;在没有指定返回值时,函数返回的是一个undefined。

你可能感兴趣的:(javascript,web前端,笔记,javascript)