JavaScript高级程序设计之函数

函数实际上是对象,每个函数都是Function类型的实例。

函数是引用类型。

函数名实际上是一个指向函数对象的指针,不会与某个函数绑定。

// 这种写法更能表达函数的本质

var sum = function(num1, num2) {

    return num1 + num2;

};



var anotherSum = sum;

sum = null;



console.log(anotherSum(10, 20));  // 30

console.log(sum(10, 20));  // typeerror: sum is not a function

没有重载

function add(num) {

    return num + 100;

}



function add(num) {

    return num + 200;

}



var result = add(100);  // 300



// 上面的代码和下面的代码没有什么区别

var add = function(num) {

    return num + 100;

};



add = function(num) {

    return num + 200;

};

那函数声明的意义?

// 这段代码是可执行的,因为解析器在向执行环境加载数据时,

// 函数声明会被提升到顶部。而变量的声明提升状态为undefined

console.log(sum(100, 200));  // 300

console.log(anotherSum);  // undefined



function sum(num1, num2) {

    return num1 + num2;

}



var anotherSum = function(num1, num2) {

    return num1 + num2;

};

函数的属性和方法

// 示例函数

var color = "blue",

    obj = {

        color: "red"

    };



function sayColor() {

    return this.color;

}



// ECMAScript5的方法,返回一个绑定了this指针的函数

var objSayColor = sayColor.bind(obj);



console.log(sayColor.length);  // 参数的个数

console.log(sayColor.prototype);  // sayColor {}  原型对象

console.log(sayColor.apply(obj, []));  // red

console.log(sayColor.call(obj, "pink", "yellow"));  // red

console.log(objSayColor());  // red

console.log(sayColor());  // blue

 

你可能感兴趣的:(JavaScript)