函数的介绍
就是将一些功能或语句进行封装,在需要的时候,通过调用的形式,执行这些语句
- 函数也是一个对象
- 使用typeof检查一个函数对象时,会返回function
函数的定义
方式一:使用函数声明来创建一个函数
function 函数名(形参1,形参2...形参N){ //形参可选
语句...
}
- function:是一个关键字。中文是“函数”、“功能”
- 函数名字:命名规定和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头
- 参数:可选
- 大括号里面,是这个函数的语句
方式二:使用函数表达式来创建一个函数
var 函数名 = function(形参1,形参2...形参N){ //形参可选
语句....
}
方式一和方式二有一定区别,在于函数声明提升和变量提升
函数声明提升可以把整个函数体提前,而用函数表达式创建函数只会提升变量,函数体不会
函数的调用
函数调用的语法
函数名字();
函数的参数:形参和实参
sum(3,4); //3和4是实际参数,也就是实参;表示真实的数值、字符串
function sum(a, b) { //a和b是形式参数,也就是形参;表示接受一个值
console.log(a + b);
}
注意:
实际参数和形式参数的个数要相同
实参的类型:
函数的实参可以是任意的数据类型。
调用函数时解析器不会检查实参的类型,所以要注意,是否有可能会接收到非法的参数,如果有可能则需要对参数进行类型的检查。
实参的数量:
注意:JavaScript里不会对函数实际传入的参数进行检测。可以传值,也可以不传值,也可以任意传多个值
调用函数时,解析器也不会检查实参的数量:
多余实参不会被赋值
如果实参的数量少于形参的数量,则没有对应实参的形参将是undefined
arguments
可以通过arguments获取所有的实际传递的参数
function add(){
var sum = 0;
console.log(arguments)
for(var i = 0;i<arguments.length;i++){
sum = sum + arguments[i]
}
return sum
}
var sum = add(1, 3, 3, 5, 6, 7);
console.log(sum);
函数的返回值
console.log(sum(3, 4));
//函数:求和
function sum(a, b) {
return a + b;
}
return的作用是结束方法
- return后的值将会作为函数的执行结果返回,可以定义一个变量,来接收该结果
- 在函数中return后的语句都不会执行(函数在执行完 return 语句之后停止并立即退出)
- 如果return语句后不跟任何值,就相当于返回一个undefined
- 如果函数中不写return,则也会返回undefined
- 返回值可以是任意的数据类型,可以是对象,也可以是函数
函数名、函数体和函数加载问题(重要,请记住)
函数名 == 整个函数
函数的加载问题:
JS加载的时候,只加载函数名,不加载函数体。所以如果想使用内部的成员变量,需要调用函数
fn() 和 fn 的区别
- fn():调用函数。相当于获取了函数的返回值
- fn:函数对象。相当于直接获取了函数对象
立即执行函数
匿名函数:
function(a, b) {
console.log("a = " + a);
console.log("b = " + b);
};
立即执行函数:
(function(a, b) {
console.log("a = " + a);
console.log("b = " + b);
})(123, 456);
立即执行函数:
函数定义完,立即被调用,这种函数叫做立即执行函数
方法
函数也可以称为对象的属性
如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法
调用这个函数就说调用对象的方法(method)
相比于方法,只是名称上的区别,并没有其他的区别
函数举例:
// 调用函数
fn();
方法举例:
// 调用方法
obj.fn();