JavaScript函数表达式与函数声明

什么是函数?编程

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

做用域:spa

  1. 全局做用域code

  2. 函数做用域(局部做用域)blog

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声明的变量都是全局变量。io

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

返回值 j = 10;console

    k is not defined!function

函数的表达式:

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(){}())

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

相关文章
相关标签/搜索