函数
1.函数介绍
函数允许我们封装一系列代码来完成特定任务。当想要完成某一任务时,只需要调用相应的代码即可。方法(method)一般为定义在对象中的函数。浏览器为我们提供了很多内置方法,我们不需要编写代码,只需要调用方法即可完成特定功能。
var myArray = ['I', 'love', 'chocolate', 'frogs'];
var madeAString = myArray.join(' ');
var myNumber = Math.random()
2.自定义函数
函数由function关键字声明,后面紧跟函数名,函数名后面为形参列表,列表后大括号括起来的内容为函数体。
也可以将一个匿名函数(没有函数名的函数)赋值给一个函数变量, 这种方式称为函数表达式。
解析器在向执行环境中加载数据时,会率先读取函数声明;并使其在执行任何代码之前可用;当执行器执行到函数表达式的代码的时候才会真正的解释执行。
//表示方法
//函数声明
function 函数名(形参列表){
//函数体
}
//函数表达式
var 函数名 = function(形参列表){
//函数体
}
3.函数的内部属性
只有在函数内部才能访问的属性。
- arguments
是类数组对象,包含着传入函数中的实际参数,arguments对象还有一个callee的属 性,用来指向拥有这个arguments对象的函数 - this
指向的是函数赖以执行的环境对象 - 立即执行函数 IIFE
(function(){})() - 函数声明的提升
函数声明提升到最顶部,变量声明提升到顶部 - 局部变量与全局变量
函数内部使用var修饰的变量,是函数内部的局部变量。
4.函数的调用
函数声明好之后并不会直接运行,需要进行调用才能运行。
调用函数:
- 函数名(实参列表);
- 函数名.call(执行环境对象,实参列表);
- 函数名.apply(执行环境对象,实参列表数组);
- 函数名.bind(执行环境对象)(实参列表);
- 函数名.bind(执行环境对象,实参列表)();
5.函数的属性和方法
函数本质上也是一种对象,拥有属性和方法。
- length 表示函数希望接受的命名参数的个数,即形参的个数。
- apply() 可以调用当前函数,并可以指定其执行环境对象
- call() 可以调用当前函数,并可以指定其执行环境对象
6.函数的应用
函数本质上是一种对象,可以将其当做普通对象来使用。
//作为参数
//由于函数名本身就是变量,所以函数可以当做值来使用(参数,返回值)。
function callOther(fun,args){
return fun(args);
}
function show(msg){
alert(msg);
}
//作为返回值()
function getFunction(){
return function(){
alert(hello);
}
}