函数的定义
在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 使用小括号将整个语句全部括起来,当作一个完整的函数表达式
*/