zoukankan      html  css  js  c++  java
  • 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();
  • 相关阅读:
    堆内存内部结构
    JVM 总体结构
    HTTP的工作原理
    HTTP协议简介
    服务器硬件资源_I/O
    maven常用命令行总结
    java enum—枚举的应用
    JAVA闰年的判断
    JAVA数据结构与算法——求最大公约数!!
    ThinkPHP 分页
  • 原文地址:https://www.cnblogs.com/LinSL/p/7372758.html
Copyright © 2011-2022 走看看