JavaScript函数表达式与函数声明

Posted mercy-up

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript函数表达式与函数声明相关的知识,希望对你有一定的参考价值。

什么是函数?

  函数是事件驱动或者被调用时执行的重复代码块。

作用域:

  1. 全局作用域

  2. 函数作用域(局部作用域)

var i = 100;     //全局作用域
    function fun(){
    var j = 10;        //局部作用域
    console.log(i + j);
}
fun();

  全局作用域与函数作用域是相对的,比如:

  i是全局作用域,j和k是函数作用域,而j是k的全局作用域。

var i = 100;     //全局作用域
    function fun(){
    var j = 10;        //局部作用域
    function fun2(){
        var k = 20;
    }
}
fun();

使用var关键字声明的变量不是全局就是局部,不是var声明的变量都是全局变量。

function fun(){
    j = 10;        //局部作用域
    function fun2(){
        var k = 20;
    }
}
fun();
console.log(j);
console.log(k)

返回值 j = 10;

    k is not defined!

函数的表达式:

var fun1 = function fun(){
     console.log("hello");  
}

  函数表达式:将函数赋给fun1之后函数名fun将被放弃,这意味着后面对函数的调用,只有fun1有效,而fun是无效的,他只有在返回函数名的之后,才有fun名称。

        fun1.name  ---->fun      

        fun.name  ---->fun is not defined !

        fun1.length ----->5     

        fun.length ----->fun is not defined !

函数的声明:

function fun2(){
     console.log("world");  
}

区别:

  函数表达式可以直接被执行符号执行,而函数声明不能,只有函数声明转换为函数表达式是才可以被执行符号执行。

  函数声明变为函数表达式,只需要在前面添加"+","-","!"这三种中的其中一个就行。

+function fun(){    //函数声明 ,在函数的前面可以加上+ - !可以让函数声明变成函数表达式
    console.log("hello");
}()
var fun2 = function(){    //函数表达式
    console.log("world");
}()

立即执行函数:

  好处:避免写全局变量,所有的内容全部都卸载立即执行函数中。

  立即执行函数必须是函数表达式。

  立即执行函数的两种表现形式:

  1. (function(){})()

  2. (function(){}())

  两者在功能上没有什么区别,主要看编程人员的习惯。

  


以上是关于JavaScript函数表达式与函数声明的主要内容,如果未能解决你的问题,请参考以下文章

函数声明与函数表达式

javascript中函数声明与函数表达式的区别

JavaScript的函数声明与函数表达式的区别

JavaScript的函数声明与函数表达式的区别

javascript数据类型--- 函数对象之基础

JavaScript--函数表达式与函数声明的区别