js高级程序设计学习笔记——基本概念

1. 逻辑或(||)运算有一个特点, a || b,当a为false的时候,如果b为对象,则直接返回b。利用这一特征,我们在给对象赋值的时候,为了防止赋空值可以使用下面赋值语句。

var myObject = preObject || backObject;

这样如果preObject不是空,就把preObject赋值给myObject,否则把backObject赋值给myObject。


2. javascript 函数不存在方法签名,因此也不存在重载。javascript中的函数定义时可以没有任何参数,在调用的时候仍然可以为其传入任意数量的参数,js的内部机制是通过一 个数组来接收所有传入的参数。因此可以在方法内部通过数组arguments来进行参数的引用。定义函数时的参数只是为了引用时候的方便以及代码的提示作用,可以理解为更 加容易阅。当然如果一个函数在定义的时候如果限定了参数,调用的时候仍然可以传入任意个数的参数。如下代码:

function test01(a, b) {
    a = "hello";
    b = "world";
    
    alert("a = " + arguments[0]);   //将会输出 a = hello
    alert("b = " + arguments[1]);   //将会输出 b = world
}

当通过arguments引用函数传入的参数时,如果参数在函数内部被改变,那么通过arguments引用的参数也是被改变后的参数:

function test02(a) {
    a = 'hello world';
    alert(arguments[0]);
}

// 调用函数并且传入参数hello
// function('hello'); 
// 此处调用test时传入的参数虽然是“hello”,但是参数的值在函数内部被改变,因此
// 通过argumen[0]应用参数的时候,其值也是被修改后的
同样的,如果在函数内部通过arguments修改了参数的值,在通过参数名称访问参数的时候,其只也是被修改后的。如下代码:
fucntion test03(a) {
    a = 1;
    arguments[0] = 2;
    alert(a);
}

/*
*调用test03函数并且传入参数3
*test03(3);
*函数会输出2
*/




你可能感兴趣的:(js)