为什么这段代码不会在JavaScript中抛出错误?
Why doesn't this piece of code throw an error in JavaScript?
当它停止工作时,我花了一段时间才在我的代码中发现这个问题。
console.log('before var');
var lastReview = ''
newReview;
console.log('after var');
在lastReview = ''
之后没有逗号,我认为这是一个语法错误,但是Chrome检查器和Firebug都没有在控制台上报告任何内容。下面的代码console.log
永远不会被执行。
Chrome实际上报告错误,如果你直接在控制台中运行代码片段…但实际页面运行时就不是这样了。Firefox在任何情况下都不会报告错误。
为什么开发工具不报告这些简单的问题?
没有(语法)错误-此代码是有效的javascript。根据规则,JS插入一个分号:
console.log('before var');
var lastReview = ''; <-- here
newReview;
console.log('after var');
使newReview;
成为一个有效的,尽管是无意义的语句。
虽然没有语法错误,但由于未定义的变量(假设newReview
之前没有声明),该代码仍然抛出一个运行时错误。
因为如果缺少分号,分号会自动插入-所以代码中没有语法错误。
在ECMAScript语言规范的自动分号插入规则一节中了解更多信息。
在你的例子中,这是:
var lastReview = ''
就变成:
var lastReview = '';
相关文章:
- javascript中的数组出错
- 使用javascript在MVC中查找网格长度时出错
- 将javascript代码转换为jquery代码时出错
- 将对象的列表c#传递给javascript:undefined变量时出错
- 使用 javascript 打开新的浏览器窗口时出错
- 比较Javascript中的两个字符串时出错
- 扩展 JavaScript Promise 时出错
- css3转换和javascript出错
- 找不到容器:goog.Disposable.instances _在为javascript工具使用泄漏查找器时出错
- 我的Javascript代码出错
- 使用Javascript将多条记录插入SQLite数据库时出错
- 在Javascript中访问Razor布尔变量时出错
- Applescript JavaScript“;行尾但找到标识符“;控制Google Chrome时出错
- 使用PHP和Javascript在函数内部传递alphaneumeric值作为参数时出错
- 在Tomcat中运行Javascript代码时出错
- Facebook Javascript SDK:发布到提要时验证访问令牌时出错
- PHP 和 googleMap API 中的 javascript 出错
- 如何在使用javascript出错时重新加载页面
- Dynamics CRM自定义表单事件Javascript出错
- 在野营应用程序中调用Javascript出错