gpt4 book ai didi

javascript - 在运行时,函数声明被解析和执行

转载 作者:行者123 更新时间:2023-11-29 20:55:57 24 4
gpt4 key购买 nike

所以在解释型语言中,比如 javascript,我们有:

var x = doThis(); // function call, assign statement

console.log(x); // print statement

function doThis(){ //function declaration
return "Hello World"; //return statement
}

我的问题是:

打印语句何时真正执行?在解析函数声明之前还是之后?如果它之前执行过,如何执行,因为没有编译器,代码会立即执行。

P.S 我已经阅读了一些关于函数提升的内容,但仍然不明白。

最佳答案

希望这对您有所帮助,我将尝试简要解释我的回答。

JS 运行时在执行上下文 中执行每段代码。每个执行上下文都有 2 个阶段:

  • 创建阶段:此阶段创建所有范围、变量和函数。还设置“this”上下文。
  • 执行阶段:这个阶段实际上通过发送机器可理解的命令来执行类似console.log( )语句的代码。

现在,当浏览器首次加载您的脚本时,它会默认进入全局执行上下文。此执行上下文还将具有创建阶段和执行阶段。

现在考虑你的代码:

//Line 1
var x = doThis();
//Line 2
console.log(x);
//Line 3
function doThis(){
return "Hello World";
}

这是解释器所做事情的伪表示:

 // First Pass
1.Find some code to invoke a function.
2.Before executing the function code, create a context to execute in.
3.Enter the Creation Stage:
- Create a scope chain
- Scan for function declarations
// In your case, this is where *doThis()* is stored in the global scope
- Scan for var declarations
// This is where *var x* is set to *undefined*
4. Run/interpret the function code in the context(Execution Stage)
// Now as per the sequence line 1 will run and set *var x = "Hello World"*
// And then followed by line 2 which will print "Hello World" to console.

这只是对实际发生情况的简短概述。我会推荐 this article以获得详细的见解。以及对 MDN 文档的一些引用:

关于javascript - 在运行时,函数声明被解析和执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com