Java教程

JavaScript函数

本文主要是介绍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);

 

这篇关于JavaScript函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!