zoukankan      html  css  js  c++  java
  • js中的变量提升

    在js中 变量声明与赋值被认为是两个不同的操作,引擎首先会对前者进行优先编译,这部分工作就是找到所有的声明(例如函数声明function b(注:非函数表达式),变量声明var a),既然是优先执行,那么在一些代码结构中,后声明的function,var 变量就会提前解释;

    例如 var a=3;引擎会认为这是两个操作  var a(声明); a=3(赋值),简而言之就是 先有蛋 后有鸡,

      理解了这一点 这就很好解释如下的代码结构及其输出

    a=2;
    var a; //定义声明提升
    console.log(a) //得到2

    -------------------分割线-------------------

    console.log( a );//得到undefined
    var a = 2; //等效于var a;//定义声明置顶               a=2;

    -------------------分割线-------------------

    foo();  //得到666

    function(){

    console.log(666)

    }

    -------------------分割线-------------------

    foo();  //报错 信息为 Uncaught TypeError: foo is not a function,因为此时 foo为undefined,而不是一个函数

    var foo = function(){

    console.log(6666)

    }

  • 相关阅读:
    Redis 补充
    python 魔法方法补充(__setattr__,__getattr__,__getattribute__)
    Mongodb 补充
    Mysql补充
    HTML
    优秀工具
    优秀文章收藏
    MySQL
    爬虫
    Python
  • 原文地址:https://www.cnblogs.com/tony-stark/p/11619254.html
Copyright © 2011-2022 走看看