我的代码停止工作时,我花了一段时间才发现这个问题。
console.log('before var');
var lastReview = ''
newReview;
console.log('after var');
lastReview = ''
之后没有逗号,我认为这是一个语法错误,但Chrome检查器和Firebug都没有在控制台中报告任何内容。以下代码console.log
永远不会被执行。
如果直接在控制台中运行代码段,Chrome实际上会报告错误...但实际页面运行时却不会。 Firefox无论如何都不会报告错误。
为什么dev工具不会报告这些简单的问题?
答案 0 :(得分:2)
没有(语法)错误 - 此代码是有效的javascript。根据{{3}},JS插入一个分号:
console.log('before var');
var lastReview = ''; <-- here
newReview;
console.log('after var');
使newReview;
成为有效的,尽管是荒谬的陈述。
虽然没有语法错误,但由于未定义的变量(假设newReview
之前没有声明),此代码仍然会引发运行时错误。
答案 1 :(得分:1)
因为如果丢失则会自动插入分号 - 因此代码中没有语法错误。
在ECMAScript语言规范的Rules of Automatic Semicolon Insertion部分中阅读更多相关信息。
在你的例子中,这个:
var lastReview = ''
变为:
var lastReview = '';