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); 

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

  • 相关阅读:
    项目经理成长之路-初入职场(二)
    项目经理成长之路-我的大学(一)
    别了郑州,2020再出发
    RPC协议实践入门
    Spark学习进度11-Spark Streaming&Structured Streaming
    使用Python自动填写问卷星(pyppeteer反爬虫版)
    All mirror URLs are not using ftp, http[s] or file.
    2018蓝桥杯A组省赛A,B,C,D
    Spark学习进度10-DS&DF基础操作
    SparkSQL学习进度9-SQL实战案例
  • 原文地址:https://www.cnblogs.com/hezihao/p/7429817.html
Copyright © 2011-2022 走看看