JS函数函数参数规则和立即执行函数 | 8月更文挑战

106 阅读2分钟

这是我参与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,如有问题,欢迎指正。也希望点赞支持!!