这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战
前言
js函数是由关键字function、函数名加一组参数以及置于大括号中需要执行的一段代码定义的。函数定义后并不会自动执行,要执行一个函数需要在特定的位置调用该函数,调用函数需要创建调用语句,调用语句包含函数名和参数的具体值以及执行符号()
而今天我们我们要聊的是跟函数有关的,函数的参数规则以及立即执行函数
函数参数
函数的参数分形参和实参,形参是指函数定义的时候声明的形式参数,实参是函数执行时传入的实际参数。 函数参数特点:
- 参数个数没限制 当实参>形参时,多余实参被忽略; 当实参<形参时,多余形参的值为undefined
- 参数的数据类型没限制 这是其实是js本身是弱数据类型语言导致的
- 参数始终按值传递的 基础类型传值 引用类型传址
- 在函数体中,通过特殊对象arguments来访问参数列表 比如实现任意个数相加:
function sum(){
var result = 0;
for(var i = 0; i < argumens.length; i++){
result += arguments[i];
}
return result;
}
sum(1,2,3,4,5);
立即执行函数
之前闭包中有提到,当函数被套一层函数后,外层函数不想用变量存储,只想单独的运行一次,那就利用立即执行函数的方式来解决。其特点是函数执行一次就立即释放。 格式如下:
//w3c推荐格式
(function(){
//code...
}())
//非推荐方式
(function(){
//code...
})()
立即执行函数适合做一些初始化的工作,在一次执行过后立即释放。
还有其他格式: 例如:
+ function(){
//code...
}();
- function(){
//code...
}();
! function(){
//code...
}();
规则:
- 当且仅当是表达式就能被执行符号()执行
- 能被执行符号执行的表达式,这个表达式中的函数的名字就会被忽略。 所以一般也不写函数的名字。如下
var temp = (function() {
var num = 0;
function inner() {
console.log(++num);
}
return inner;
}());
temp();
temp();
temp();
结束语
我是前端新手,Andy_W,如有问题,欢迎指正。也希望点赞支持!!