【发布时间】:2017-01-14 18:19:05
【问题描述】:
我正在阅读 Kyle 的“你不懂 JS”系列丛书/观看他的讲座,他说,对于以下代码:
var a = 2;
2();
就Javascript语言而言,第二行是错误的。它实际上在语法上无效。这不是运行时问题;这是一个实际的作者时间问题。
所以在解释型语言中,如果我们纯粹是逐行运行并且我们没有进行多次传递——我们会先运行第一行,然后我们会发现第二行有问题,然后我们会抛出一个错误。
但是编译语言会说第二行的问题,它会在尝试运行第一行之前用该错误标记您。
“因此,在这方面,JavaScript 更像是一种编译语言而不是解释语言,因为 JavaScript 在尝试运行第一行之前肯定会先查看第二行。它查看第一行是为了了解第一行是什么大约,但它没有运行它。所以当你把这样的程序放在一个文件中并且你把它加载到浏览器中时,第一行将永远不会运行。你会立即得到一个错误说第二行无效。”
所以我在 chrome 的控制台中尝试了这段代码,令人惊讶的是它运行良好,我的意思是 a 变量将被分配,如果我们稍后再尝试console.log(a) 它打印“2”。
是某种控制台的特定行为还是什么?
【问题讨论】:
-
你能提供一个链接到你找到那个例子的地方吗?
标签: javascript google-chrome compiler-errors compilation interpreted-language