0

当它停止工作时,我花了一段时间才在我的代码中发现这个问题。

console.log('before var');
var lastReview = ''
    newReview;
console.log('after var');

我认为没有逗号之后lastReview = ''是语法错误,但是 Chrome 检查器和 Firebug 在控制台中都没有报告任何内容。以下代码console.log根本不会执行。

如果您直接在控制台中运行代码段,Chrome 实际上会报告错误......但在实际页面运行时不会。Firefox 在任何情况下都不会报告错误。

为什么开发工具不报告这些简单的问题?

4

2 回答 2

2

没有(语法)错误 - 此代码是有效的 javascript。按照规则,JS插入分号:

console.log('before var');
var lastReview = ''; <-- here
    newReview;
console.log('after var');

所以这newReview;成为一个有效的,虽然是荒谬的,陈述。

尽管没有语法错误,但由于未定义变量(假设newReview之前未声明),此代码仍会引发运行时错误。

于 2013-04-04T18:13:11.070 回答
1

因为如果缺少分号,无论如何都会自动插入分号 - 所以代码中没有语法错误。

在 ECMAScript 语言规范的自动分号插入规则部分阅读有关此内容的更多信息。

在您的示例中,这是:

var lastReview = ''

变成:

var lastReview = '';
于 2013-04-04T18:13:08.720 回答