【问题标题】:How JavaScript execute the code and define variables?JavaScript 如何执行代码并定义变量?
【发布时间】:2017-06-26 14:38:01
【问题描述】:

我刚刚开始学习 JS 并试图了解它是如何执行代码的。如果我运行以下代码:

    console.log(a);

    var a = 'hello world'

    console.log(a);

第一行的输出是'undefined',第二行是'hello world'。我的问题是为什么 JS 没有做这些:

1) 在第一行给我一个错误,“a is not defined”,然后输出“hello world”。

2) 我知道 JS 有两个阶段 CREATION 和 EXECUTION,那么在这种情况下,在创建阶段结束时,JS 知道一个值已被定义为“hello world”。为什么它没有为两个 console.log 提供“hello world”?

谢谢

【问题讨论】:

  • 第一个变量尚未定义(声明),然后它被声明,您可以在第二次尝试时打印它
  • 只有具有初始 undefined 值的变量创建被提升。 a = 'hello world' 赋值是执行的一部分。

标签: javascript


【解决方案1】:

1) 当涉及到您的要求时,您必须编写自己的调试类型。消息“未定义”是浏览器表示“未定义”的方式

2)如果代码没有被分割成函数并通过函数调用执行,代码将按程序执行

var a = "Hello World"; //this is execute first
console.log(a); //this will execute second


function outputVar () { console.log(a); } //function is initialized but not executed
var a = "Hello World"; //This will execute first
outputVar(); //This will call the initialized method that will reference the var that was set already.

需要了解的是所有代码都会从上到下按顺序执行,除非它与其他一些等待调用的初始化代码分开。类和函数

还要记住变量的访问级别。您可能需要研究局部变量和全局变量,以了解如何让这些正在调用的初始化函数访问数据。

【讨论】:

    【解决方案2】:

    CREATION 阶段之后的代码实际上是什么样子的:

    var a; // hoisted during the creation
    
    console.log(a);
    a = 'hello world'
    console.log(a);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 1970-01-01
      • 2011-06-19
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      相关资源
      最近更新 更多