zoukankan      html  css  js  c++  java
  • 函数声明与函数表达式的区别

    1.函数声明

    函数声明以function关键字开头,接着是必须的函数(变量)名和以逗号分隔的可选的参数列表,再接着就是以大括号封装的函数体。函数声明必须是一个单独的JavaScript语句。

    2.函数表达式

    在任何情况下都是其它JavaScript语句的一部分(比如赋值表达式等号的右侧、函数的参数)的函数被称为函数表达式。

    3.比较

    //函数声明
    function myFunctionDeclaration(){ function innerFunction() {} } //以下为函数表达式
    var myFunc = function(){}; myFunc(function(){ return function(){}; }); (function namedFunctionExpression () { })(); +function(){}(); -function(){}(); !function(){}(); ~function(){}();

    myFunctionDeclaration 是一个包含其它函数声明(innerFunction)的函数声明

    函数表达式总是其它JavaScript语句的一部分,比如变量声明等号的右侧:

    var myFunc = function(){};

    或者其他函数的参数:

      myFunc(function() {

       return function(){};

    }); 
    或者立即执行函数:

    (function namedFunctionExpression () { })();

    或者被为运算符修饰:

     +function(){}();

    函数声明与函数表达式除了以代码放的位置不同区别,还有一点不同,那就是函数声明必须有函数名,而函数表达式的函数名可以省略。

    函数声明必须有函数名是因为函数被调用的基本要求,在调用一个函数时我们必须能够引用它,而唯一的方法就是通过函数名。

    函数表达式是其它JavaScript语句的一部分,所以我们有别的方式引用它们,比如函数被赋值给一个变量,可以通过变量名来访问:

    var doNothing = function(){};
    doNothing();

    或者作为其它函数的参数,可以通过参数名访问:
    function doSomething(action) {
      action();
    } 
    关于立即执行函数:
    立即执行函数必须用括号包裹,原因很简单,JavaScript解析器需要区分函数声明和函数表达式,如果省略函数外边的括号,并且直接调用( function(){}(2)此处函数外面没有括号),
    JavaScript解析器开始解析,并且结束执行,因为这条语句是以function关键字开始,被当作函数声明,由于函数声明必须要有函数名,因此会抛出异常。函数外边的括号会给JavaScript解析器这是一个函数表达式的信号。为了达到相同的目的,也可以这样写:
    (function (a){}(3)),括号的作用和上面相同。
    位运算符的作用和上面也是相同的。


     
  • 相关阅读:
    关于lua扩展库lpack的使用指南
    mac下安装LuaSocket
    lua_の_进阶总结之基础篇
    minicap_工具使用
    AutoSense脚本日志总结(微信搜索【水勺子】公众号获取详情)
    六:Spring Security 中使用 JWT
    五:Spring Security 中的角色继承问题
    四:Spring Security 登录使用 JSON 格式数据
    二:整合Spring Security
    三:Spring Security 登录添加验证码
  • 原文地址:https://www.cnblogs.com/Saints/p/5991186.html
Copyright © 2011-2022 走看看