函数的定义

在JavaScript中函数有三种定义方式,即函数声明函数表达式Function构造函数

// 函数声明(常用)
function sum(arg1,arg2){
	return arg1 + arg2;
}
============================
// 函数表达式(常用)=>可以为匿名函数或具名函数,如有foo,为具名函数,如没有,则为匿名函数
// 值得注意的是 在匿名函数中,其this的指向是window
var sum = function foo(arg1,arg2){
	return arg1+arg2;
}
===========================
// Function构造函数(不常用)
var add = new Function('a','b','return a + b');

函数的调用

在JavaScript中要想调用函数,具有五种方法,分别为函数调用模式,方法调用模式,构造器调用模式,call()、apply()函数调用模式,匿名函数调用模式

// 函数调用模式 => 直接通过函数名调用的模式 
function add(a1,a2){
	return a1+a2;
}
add(1,2);
=====================================================================
/* 方法调用模式 => 优先定义一个对象obj,然后在对象内部定义值为函数的数学property,
* 				 通过函数obj.property()或obj['property']()来进行调用;
*				 若某个方法中返回的是this,则可以连续调用(基于链式调用原理)
**/               
var obj = {
		name:'JavaScript';
		getName:function(){
			return this.name;
	}
};
obj.getName();
obj['getName']();
==================================================
// 构造器调用模式 => 在函数中定义实例属性,在原型上定义函数,
//  			  然后通过new操作符生成函数的实例,再通过实例调用原型上定义的函数
function Person(name){
	this.name = name;
}
Person.prototype.getName = function(){
		return this.name;
}
var p = new Person('JavaScript');
p.getName();
==================================
/*
*call()和apply()函数调用=>可以改变函数执行的主体
**/
// 定义sum函数
function sum(arg1,arg2){
	return arg1 + arg2;
}
// 定义一个person对象
var person = {};
// 通过call()函数和apply()函数调用sum()函数
sum.call(person,1,2);
sum.apply(person,[1,2]);
========================================
/*
 *匿名函数调用
 *	1.通过函数表达式定义函数
 *	2.使用小括号将匿名函数括起来
 *		2.1 让小括号前面的语句是一段函数表达式,函数表达式后面跟的小括号表示的函数立即执行
 *		2.2 使用小括号将整个语句全部括起来,当作一个完整的函数表达式
*/