美文网首页
变量提升

变量提升

作者: zhulichao | 来源:发表于2020-07-24 09:04 被阅读0次

注意js运行时先执行变量提升,然后在从上往下执行。

/*
相当于:
var a;
function a() {}
a = 1;
*/
var a = 1;
function a() {}
console.log(a); // 输出 1
/*
相当于:
var a;
a = {
    x: 'x',
    a: a, // 此时a是undefined
};
*/
var a = {
    x: 'x',
    a: a,
};
console.log(a); // 输出 {x: "x", a: undefined}
var a = {x:'x'};
a.a = a;
console.log(a); // 输出 {x: "x", a: {…}} a可以无限展开
var a = 100;
function testResult() {
  var b = 2 * a;
  var a = 200; // 这里的 a 会覆盖外面的 a
  var c = a / 2;
  console.log(b, c); // NaN 100
}
testResult();
function createFunctions() {
  var result = new Array();
  for(var i = 0; i < 10; i++) {
    var j = i;
    result[i] = function() {
      return j; // j 存在变量提升,循环结束后 j 为 9
    }
  }
  return result;
}
createFunctions().forEach(item => console.log(item())) // 10 个 9

相关文章

  • 浅析关于 JS 作用域的几个高频知识点

    闭包 词法作用域 变量提升 变量提升 什么是变量提升 顾名思义,变量提升指的是,在声明变量的时候,变量的声明位置会...

  • JS中的提升

    JS中包含两种提升,变量提升和函数提升。 变量提升 变量提升只能是var或者function声明的变量或者函数,l...

  • 变量提升问题

    这是 变量提升问题 1. 变量提升, 很简单,就是把变量提升提到函数的top的地方。我们需要说明的是,变量提升 只...

  • JavaScript__变量声明提升(Hoisting)

    摘取:http://www.jb51.net/article/30719.htm 变量提升 变量提升就是把变量提升...

  • var,let,const 的区别

    变量提升 变量提升即将变量声明提升到它所在作用域最前面,而且仅仅是提升变量,不会提升所赋的值 执行流程 作用域 在...

  • 执行上下文和执行上下文栈

    一、变量提升和函数提升 首先回顾一下什么是变量提升。 变量声明提升,通过var定义(声明)的变量,在定义语句之前就...

  • let const var

    变量提升 函数会优先于变量提升; 函数提升会把整个函数移到作用域顶部 变量提升智慧把变量的定义移到作用域顶部 wi...

  • 2021-04-02

    变量提升和函数提升以及他们的优先级 1,变量提升:变量提升是指将变量声明提升到它所在的作用域的最开始部分 2,函数...

  • 关于变量提升

    函数提升的优先级要高于变量提升,变量提升到函数声明的后面; 变量提升,但是赋值不提升,函数表达式不提升;

  • Javascript 变量执行过程 和 数组 & 对象的区别

    变量提升 JS执行过程1. 先提升(先提升函数,再提升变量,如果名字一样,变量提升会覆盖函数提升)2. 再执行,如...

网友评论

      本文标题:变量提升

      本文链接:https://www.haomeiwen.com/subject/qrxjhktx.html