为什么我的代码在语法错误之前没有执行,导致 JavaScript 中的行

Why my code not executing before syntax error causing line in JavaScript

提问人:Anjali Chauhan 提问时间:6/27/2023 最后编辑:DavidAnjali Chauhan 更新时间:6/27/2023 访问量:60

问:

// snippet for syntax error
console.log("hello stackoverflow!");
const test3;
test3='❌'
console.log(test3)

var name="me"
console.log(name)

我知道 JS 是同步的并且逐行执行代码,但为什么这里没有被打印出来,因为错误在下一行。hello stackoverflow!

另外,请考虑下面的另一个片段

// snippet for typeError
console.log('hello stackoverflow!')
const test3 = '✅'
test3='❌'
console.log(test3)

var name="me"
console.log(name)

此代码段打印“hello stackoverflow”。这与第一个代码段的行为不同。

谁能帮我为什么会发生这种情况,以及谁在 JS 中识别这些错误,这是否发生在 JavaScript 中的内存分配之前?

我希望控制台.log()在两种情况下都会被打印出来,这在第一个代码段中没有发生。

JavaScript 语法 - 类型错误

评论

1赞 tadman 6/27/2023
你在事后设置一个常量?这是一个变量。值得一读 const 的含义。 语法无效。 是。const xconst x = 'y'
0赞 Salketer 6/27/2023
第一种情况是 SyntaxError,它们在代码执行之前被检测到。第二种情况是 TypeError,它们在执行时发生。这就是为什么您会看到 2 种不同的行为。

答:

7赞 Quentin 6/27/2023 #1

JS 中事情发生的顺序不是严格线性的。

在执行开始之前扫描语法错误。

评论

0赞 Anjali Chauhan 6/27/2023
TypeError 也是错误的一部分,为什么然后执行控制台.log代码。如果扫描错误,则不应开始代码执行
0赞 Quentin 6/27/2023
类型错误不是语法错误。它们在不同的时间被检测到。
0赞 Anjali Chauhan 6/27/2023
所以JS做类型检查?
0赞 Quentin 6/27/2023
可能不是你所想的那样。此类型错误是因为您尝试重新分配 的值。const
2赞 TMarciDev 6/27/2023 #2

解释型语言并不意味着它像 shell 脚本一样逐行执行。在第一行执行之前发生了许多事情,例如可变空间分配。 如果以一种方式定义变量,但以另一种方式使用它,则代码执行根本不会启动。 请阅读有关代码生命周期的信息:https://www.freecodecamp.org/news/execution-context-how-javascript-works-behind-the-scenes/