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();
  • 相关阅读:
    02_离线计算系统_第2天(HDFS详解)
    01_离线计算系统_第1天(HADOOP快速入门)
    01_离线计算系统_第1天(HADOOP快速入门)
    第4天 java高级特性增强 ---有用 第一遍
    038_字符串的转义
    037_标准化日期代码
    036_js中的字符串比较大小
    035_jQaury中的each()循环
    034_json对象字符串长什么样子?
    033_SpringMVC返回String,view,Object的原理
  • 原文地址:https://www.cnblogs.com/LinSL/p/7372758.html
Copyright © 2011-2022 走看看