函数即对象。比如,JS可以把函数赋值给变量,或者作为参数传递给其他函数。因为函数就是对象,所以可以给它们设置属性,甚至调用它们的方法。
嵌套函数:内部函数可以读写外部函数定义的参数
function f () { var x = 'local'; function g() { alert(x); } g(); } f(); alert: local
作为函数调用:
function arr(x,y){
return x*y;
} arr(2,4) //返回8
作为方法调用:
var Obj = { firstName:"John", lastName: "Doe", fullName: function () { return this.firstName + " " + this.lastName; } } myObject.fullName(); //"John Doe"
这里面的function()是函数,但这个函数属于对象的。里面的this得值是对象,返回的Obj的值。
作为构造函数调用:
function People(name,age){ this.name = name; this.age = age; } var people1 = new People("大毛","12"); alert(people1.name);//大毛
函数的实参和形参:
什么是可选形参呢?答案就是当调用函数的时候传入的实参比函数声明时指定的形参个数要少,辣么剩下的形参都设为undefined。
实参的对象:当调用函数的时候传入的实参个数超过定义的形参数,没有办法直接获得没命名值得引用。arguments标识符指向实参对象的引用,可以通过下标访问实参的值。argument[0]表示第一个参数
当然了arguments并不是真正的数组,它是一个实参对象。每个实参对象都包含以数字为索引的一组元素以及length属性,但它不是真正的数组。
function f(x){ console.log(x); //输出实参的初始值 arguments[0] = null; //修改实参数组的元素,那么x的值也会变的 console.log(x); //输出"null" }
函数能定义也能调用
function square(x) { return x*x;} var s = square; square(5); s(5); //25
当然除了赋值变量,还能赋值属性 ,当函数作为对象的属性调用时,函数就称为方法