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

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

  • 相关阅读:
    layer 刷新某个页面
    C# Server.MapPath的使用方法
    .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
    ASP.NET MVC4.0 后台获取不大前台传来的file
    安卓手机修改host
    mvc 页面 去掉转义字符
    educoder数据库实训课程-shell语句总结
    python selenium实现自动操作chrome的某网站数据清洗【此篇为jupyter notebook直接导出.md】
    LeetCode_27移除元素【数组】
    LeetCode_26 删除排序数组中的重复项【数组】
  • 原文地址:https://www.cnblogs.com/hezihao/p/7429817.html
Copyright © 2011-2022 走看看