zoukankan      html  css  js  c++  java
  • 命名函数表达式不会预先提升

    使用JavaScript时,当你这样调用函数是没有问题的

    1 func1();
    2 function func1() {
    3     console.log('func1');
    4 }
    5 func1();

    如果你这样

    1 func2(); // Uncaught TypeError: func2 is not a function
    2 
    3 var func2 = function () {
    4     console.log('func2');
    5 } 
    6 
    7 func2();

    在第一行就会得到func2 is not a function的错误。因为上面的代码和下面是等价的

    1 var func2;
    2 
    3 func2(); // Uncaught TypeError: func2 is not a function
    4 
    5 func2 = function () {
    6     console.log('func2');
    7 } 
    8 
    9 func2();

    func2只是声明了,但并没有被赋值,也就是说,第3行调用语句出现时,func2的值还是undefined!因此,浏览器报错说“func2不是一个函数”。

    总结:不同于直接声明函数的形式,函数表达式不会预先提升。

    (完)

  • 相关阅读:
    剩下的树
    守形数
    小白鼠排队(map容器插入数据的四种方法)
    字母统计
    与7无关的数
    ZOJ
    基于js的CURD插件
    API验证插件
    Django之权限管理插件
    Django之信号和序列化
  • 原文地址:https://www.cnblogs.com/zhangbao/p/5939347.html
Copyright © 2011-2022 走看看