JavaScript 模式(二)

函数基本


1.总体说明

  • 函数是对象,可以动态创建,可以扩展,可作为参数和返回结果,可以拥有属性和方法
  • 函数提供作用域,代码块不提供

2.函数声明

  • 命名函数表达式
  var funcName = function funcName(){
      //TODO
  };
  • 匿名函数表达式
  var funcName = function(){
      //TODO
  };
  • 函数声明
  function funcName(){
      //TODO
  }

【说明】

  • 命名函数表达式和匿名函数表达式都必须以分号结束
  • 函数声明不能用来分配变量和属性,只能在 函数体内部 或者 全局空间中使用

3.函数的命名属性

函数默认具有name属性,三种声明下:

  • 命名函数表达式: name为funcName (一般变量和函数名相同,否则IE不能正确实现)
  • 匿名函数表达式: 空字符串(其他浏览器)或者undefined(IE浏览器)
  • 函数声明: name为funcName

4.函数提升(hoisting)

  • 对于所有变量,在函数体的任何地方进行声明,都会被提升到函数顶部
  • 函数声明会将整个函数在域内提升
  function region(){

     funcHoist(); //执行函数
     
     //函数声明
     function funcHoist(){
         //TODO
     }
  }
  • 函数表达式会将变量名提升,但函数本身不提升
    function region(){

     funcNoHoist(); //报错,类型为undefined
     
     //函数声明
     var funcNoHoist = function(){
         //TODO
     }
  }

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 128,994评论 18 137
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock阅读 3,090评论 2 36
  • 我站在青春的尾端,遥望来时的路,有些悸动,有些悲伤。过了这么些年,才发现:一切都如同风一样,吹一吹就散了...
    海盗叔叔有奶糖阅读 87评论 0 0
  • ​ 在2014年做销售培训的时候,当时的课程是专业化销售提升班,培训完以后,当时有一节课是互动环节,有一个应届毕业...
    黄锦宣阅读 160评论 0 1
  • 刘鹏程Sai.L是知乎上证劵投资领域比较出名的人物,在他的一个回答中,列出了此领域的一些书目。这个答案的链接:关于...
    顾慎为阅读 1,906评论 0 4
  • 趁着月色明亮,你该约上我。 人手一瓶啤酒 仰躺在草垛上 星星在我们头顶聚会 蛐蛐啃着我们的脚趾头 白杨树叶子在风里...
    f3494c632b49阅读 307评论 9 9