• JS_高程7.函数表达式(1)


    定义函数的两种常见的方法:

    1 . 函数声明

    2. 函数表达式

    # 差异

    (1)函数声明 ,具有函数声明提升的特征。

    (2)函数声明的函数的name属性为函数的名称;使用函数表达式定义的函数在ES5中,name属性为空字符串,在ES6中为函数的名称。

     #  函数声明提升

      函数声明

    1 sayHello();//在函数声明之前调用函数不会报错,因为函数声明提升。
    2 function sayHello(){
    3     console.log("Hello!");//Hello!
    4     console.log(sayHello.name);//sayHello
    5 }

      函数表达式

    1 sayHello();// TypeError: sayHello is not a function  使用函数表达式的方法定义函数,在变量声明函数之前调用函数会报错。
    2 var sayHello = function (){
    3     console.log("Hello!");//Hello!
    4     console.log(sayHello.name);//sayHello。注意:在ES5中,匿名函数的name属性是空字符串(P176),在ES6中返回这个具名函数原本的名字。
    5 }
    6 sayHello();//在这里调用不会报错。  

    # 注意以下这种情况

     1 //不要这样做。由于函数声明提升的原因,以下代码在ECMAScript中属于无效语法,浏览器尝试修正的错误的做法不一致。P176
     2  var flag = true;
     3  if(flag){
     4      function sayHi(){
     5          console.log("Hi");
     6      }
     7  }else{
     8      function sayHi(){
     9          console.log("Yo");
    10      }
    11  }
    12  sayHi();//严格模式下会报错。 ReferenceError: sayHi is not defined
     1 //可以这样做,使用函数表达式。
     2  var flag = true;
     3  var sayHi;
     4  if(flag){
     5      sayHi = function(){
     6          console.log("Hi");
     7      }
     8  }else{
     9      sayHi = function(){
    10          console.log("Yo");
    11      }
    12  }
    13  sayHi();
  • 相关阅读:
    CLR(Common Language Runtime)
    六个经典的英语面试问题
    XML基本知识(三)
    vc++中各种字符串(转载)
    winform窗体间传值
    jQuery实现按比例缩放图片
    .net中几个名词解释
    XML Schema 定义
    C#中TreeView组件使用方法初步
    微软电话面试题
  • 原文地址:https://www.cnblogs.com/LinSL/p/7372758.html
Copyright © 2020-2023  润新知