javascript权威指南 第8章 笔记 Kevin

1.“||”运算符 如果||运算符的第一个参数为true,或者是一个可以转换为trued的值,该运算符就会返回其第一个参数。否则会返回第二个参数。例:  a = a||[];如果a已经定义了并且为非null,它则返回a,否则a便是空的。

2.尽管定义javascript函数时有固定数目的命名参数,但当调用这个函数时,传递给它的参数数目却可以是任意的。arguments对象允许完全地存取那些实际的参数值。arguments对象是一个类似数组的对象。

关于arguments的一个例子:

function b(a){

  alert(a);

  arguments[0]=[12,3];

      alert(a);

}

b();//undefined,undefined

b(1);//"1","12,3";

-------------------------

从这个例子中可以看出来1.arguments对象是在有参数传进来的时候才会初始划分配内存的。2.arguments对象有一个非同寻常的特性,当函数具有命名了的参数时,arguments对象的数组元素是存放函数参数的局部变量的同义词。

3.callee属性

  arguments对象定义了callee属性,用来引用当前正在执行的函数。这个属性没有多大的用处,但它可以用来允许对未命名的函数递归地进行调用 例

    function(x){

      if(x<=1)    return 1;

      return  x*arguments.callee(x-1);

    }

4.apply()方法和call()方法:apply()方法有两个参数,用作this的对象和要传递个给函数的参数的数组。例如:

function sayColor(sPrefix,sSuffix) {
    alert(sPrefix + this.color + sSuffix);
};

var obj = new Object();
obj.color = "blue";

sayColor.call(obj, new Array("The color is ", "a very nice color indeed."));//最后生成的消息仍是 "The color is blue, a very nice color indeed."

call()方法是与经典的对象冒充方法最相似的方法。它的第一个参数用作this的对象,其他参数直接传递给函数自身。
例:
function sayColor(sPrefix,sSuffix) {
    alert(sPrefix + this.color + sSuffix);
};

var obj = new Object();
obj.color = "blue";

sayColor.call(obj, "The color is ", "a very nice color indeed.");//最后生成的消息 "The color is blue, a very nice color indeed."

原文地址:https://www.cnblogs.com/kfx2007/p/2451761.html