您的位置:首页 > Web前端 > JavaScript

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

2014-04-24 14:28 330 查看

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: