javascript笔记:函数的定义与调用

1.1 函数定义

//单个参数(对象参数)
function pritprops(o){
    for(var p in o)
        console.log(p+":"+o[p]+"\n");
}

//多个参数(计算两个笛卡尔坐标之间的距离)
function distance(x1,y1,x2,y2){
    var dx = x2 - x1;
    var dy = y2 - x2;
    return Math.sqrt(dx*dx + dy*dy);
}

//递归函数,调用自身的函数(计算乘阶)
function factorial(x){
    if(x <= 1) return 1;
    return x * factorial(x-1);
}

//把函数赋值给一个变量
var square = function(x){return x*x;}

//函数表达式可以包含名称,递归时很好用
var f = function fact(x){
    if(x <=1) return 1;
    return fact(x-1)*x;
}

//函数表达式也可以作为参数传递给其他函数
data.sort(function(a,b){return a-b;});

//函数定义后直接运行
(function(x){alert(x);}(10));
var tensquared = (function(x){alert(x);})


//嵌套函数
function hypotenuse(a,b){
    function square(x){return x*x;}
    return Math.sqrt(square(a)-square(b));
}

1.2 函数调用

共有四种调用方式:

  1. 作为函数
  2. 作为方法
  3. 作为构造函数
  4. 通过它们的call()和apply()方法间接调用
//作为函数调用  (代码全文通用)
pritprops(10);
var total = distance(0,0,1,3) + distance(2,3,4,4);
var probabilly = factorial(5)/factorial(3);
//作为方法调用
var calulator = {
    operand1:1,
    operand2:1,
    add:function(){
        //相当于声明了一个result
        this.result = this.operand1 + this.operand2;

    }
};
calulator.add();  //2
calulator.result; //2


//更复杂的访问表达式
customer.surname.toUpperCase();   //调用customer.surname的方法
f().m();                          //调用f()返回的方法m()
//构造函数调用
var o = new Object();
var o = new Object;

注:如果构造函数里有实参,则它与普通函数的调用时一样的。但如果没有它则是作为一个新对象初始化上下文。

你可能感兴趣的:(javascript)