函数概念
由事件驱动或被调动时,可重复执行的代码块
优点
增强代码灵活性、减少代码冗余,增强代码复用性、可维护性
函数的三种创建方式
1.函数声明
function functionName(){
//具体要执行的代码...
}
2.函数表达式
var function = function(){
//具体要执行的代码...
}
3.借助系统自带的内置对象(构造函数)来创建一个函数;不推荐
var functionName = new Function();
匿名函数自调用(立即执行)
(function(){
console.log("aa");
})()
参数
当函数体内部的值是可变的,又由外界所决定,考虑使用参数
形参:在定义一个函数时,小括号里面写的变量
实参:在调用函数时,小括号里面写的变量
例如:
function doAdd(形参,形参){
var sum = a + b;
console.log(sum);
}
doAdd(实参,实参);
如果有形参,无实参,形参默认取到undefined
形参和实参时一一对应的,例如
function bar(a){
console.log(a);
}
bar(1,2);//由于形参只有一个,实参有两个,输出结果为1
JS代码的执行过程
分两步操作:
第一步、扫描当前环境中所有的声明,并将声明提升至对应环境的顶部
第二步、执行具体代码
关于声明提升:
对于变量声明,提升的是变量名,赋值语句再原来的位置执行
对于函数声明,提升的是函数体
foo(); //报错:foo is not a function
var foo = function(){
console.log("aa");
}
arguments
arguments在函数内使用,保存的是传给函数的所有的实参的一个集合,用在形参无法确定的场景中
function foo(){
console.log(arguments); //伪数组 类数组对象
console.log(arguments[0]); //取第一个实参
console.log(arguments.length); //实参的个数
console.log(arguments.length-1); //取最后一个实参
//取所有的实参
for(i=0;i<arguments.length;i++){
console.log(arguments[i]);
}
}
foo(实参,实参,实参...);
return
函数返回值 函数的运行结果 如果没有return或return后没有值,默认返回undefined
结束函数执行return后面代码不再执行
function foo(){
console.log("aa");
return;
console.log("bb");
}
foo();//输出结果为 aa