JavaScript函数
作者:互联网
1.在JavaScript中,函数分为两种:一种为关键字形式函数,通过function进行声明定义;另一种为表达式形式的函数。
函数如果只声明未调用,则声明语句不会执行。
2.形式参数:在函数声明时,声明部分的小括号里可以书写形参。
实际参数:在函数调用时,传递数据的参数为实参。
3.变量作用域
<script type="text/javascript">
var num = 66;
function fun(){
console.log(num);
var num = 99;
}
fun()
</script>
以上程序输出结果为undefined,这是因为JavaScript中会将变量声明部分会提升,但不会将赋值部分提升。即var num;语句会提升到console.log(num);语句之前。
任何语句都无法阻止变量声明部分的提升
4.关键字return
关键字return一般只能在函数体中使用。其作用为:
①在函数体中如果遇见关键字return,函数体中后面的语句不再执行;
②函数体中关键字可以将计算完的结果返回。
<script type="text/javascript">
function add(num1,num2){
return num1+num2;
}
var result = add(2,3)
console.log(result)
</script>
上例输出结果为5。
5.表达式形式函数
将关键字function定义的函数赋值给变量,这种形式的函数就称为表达式形式函数。
var abc=function fun1(){
console.log("啦啦啦");
}
abc();
上例中函数名fun1可以省略,省略后称为匿名函数。
6.两种形式函数的比较
①关键字形式函数的声明会被提升到作用域的最上方,因此可以在声明之前调用函数。
<script type="text/javascript">
fun1()
function fun1(){
console.log(666);
}
</script>
②在表达式形式函数中,变量的声明部分会被提升,但变量的赋值部分即函数的声明部分不会提升,因此不能在声明之前使用。
<script type="text/javascript">
console.log(abc)
var abc = function fun1(){
console.log(666);
}
</script>
7.回调函数:当一个函数执行时,传递的实参是另一个函数的声明部分。
<script type="text/javascript">
function promise(callback){
callback();
}
promise(function(){
console.log("我执行了!")
})
</script>
8. 函数递归:函数直接或间接调用自身的现象。
<script type="text/javascript">
function fun1(){
console.log('我执行了!')
fun1()
}
fun1()
</script>
注意:使用这种方式时,要避免出现死循环。
9.IIFE(immediately invoking function express):在声明表达式形式函数的同时立刻马上执行一次。
①
<script type="text/javascript">
var fun = function(){
console.log('我执行了!')
}();
</script>
在表达式形式函数声明后加上小扩号即可构成IIFE。
②对于关键字形式的函数,可使用+、-、!、()变成表达式形式的函数,再通过()构成IIFE。
<script type="text/javascript">
+function(){
console.log('+ - ! ()可以使关键字函数变为表达式形式函数')
}();
</script>
<script type="text/javascript">
(function(){
console.log('+ - ! ()可以使关键字函数变为表达式形式函数')
})();
</script>
③每个IIFE都有属于自己独立的作用域,且相互不影响。
//第一个IIFE
+function(a){
console.log(a);
}(100);
//第二个IIFE
+function(a){
console.log(a);
}(66);
标签:function,console,函数,JavaScript,关键字,fun1,log 来源: https://blog.csdn.net/qq_40523659/article/details/120638345