zoukankan      html  css  js  c++  java
  • JavaScript 函数声明,函数表达式,匿名函数的区别,深入理解立即执行函数(function(){…})()

    function fnName(){xxxx};        // 函数声明:使用function关键字声明一个函数,在指定一个函数名。
    
    //例如:(正常,因为 提升 了函数声明,函数调用可以在函数声明之前)
    fnName();
    function fnName(){
      alert('Hello World');
    }
    
    
    
    
    var fnName = function(){xxxx};  //函数表达式:使用function关键字声明一个函数,但是未给函数命名,最后将匿名函数赋予给一个变量。
    
    //例如1:(报错,变量fnName还未保存对函数的引用,函数调用必须在函数表达式之后)
    fnName();
    var fnName = function(){
      alert('Hello World');
    }
    //例如2:(正常,函数表达式后面加括号,当JavaScript引擎解析到此处时能立即调用函数)
    var fnName = function(){
      alert('Hello World');
    }();
    //例如3:(报错,JavaScript引擎只解析函数声明,忽略后面的括号,函数声明不会被调用)
    function fnName(){
      alert('Hello World');
    }();
    
    
    
    
    function(){xxxx};               //匿名函数:使用function关键字声明一个函数,但是未给函数命名,所以叫匿名函数,匿名函数属于函数表达式,
                                    //匿名函数有很多作用,赋予一个变量则创建函数,赋予一个事件则成为事件处理程序或者创建闭包等等。
                                    
    //例如:(语法错误,语法错误,虽然匿名函数属于函数表达式,但是未进行赋值操作,所以javascript引擎将开头的function关键字当做函数声明,报错:要求需要一个函数名)
    function(){
      alert('Hello World');
    }();

     先来给大家看两个小例子:(1)

    var foo = 1;
      (function(){
          console.log(foo);   
          var foo = 2;
          console.log(foo);   
    })();

    输出:undefined  和   2

    (2) 

    var foo = 'Hello';
      (function(){
          console.log(foo); 
          var bar = 'world';
          console.log(foo + bar); 
        })();
    console.log(foo + bar); 

    如果我的内容对你有帮助,欢迎打赏

  • 相关阅读:
    Dapper的常用操作
    git下载慢的解决方案
    笔记
    第06组 Beta冲刺(3/5)
    第06组 Beta冲刺(2/5)
    第06组 Beta冲刺(1/5)
    第06组 Alpha事后诸葛亮
    第06组 Alpha冲刺(6/6)
    第06组 Alpha冲刺(5/6)
    第06组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/hezihao/p/7429817.html
Copyright © 2011-2022 走看看