javascript – JS中的半结肠问题

参见英文答案 > When should I use a semicolon after curly braces?8个
我碰巧遇到了以下奇怪的情况:

其中一个网络调用返回了这样的响应:

window.function1 = function() {
  console.log('function 1');
} window.project = 'test';

但是,当对以下脚本进行评估时,它将返回错误

Unexpected Identifier

在function1定义之后添加分号时,此问题得到修复所以正确的修复是:

window.function1 = function() {
  console.log('function 1');
}; window.project = 'test';

我很想知道这背后的原因.

解决方法

window.function1 = function() {
  console.log('function 1');
} window.project = 'test';

js引擎将这整个事件作为一个语句读取,因为它无法为匿名函数赋值找到任何分号,它继续解析只找到window.project =’test,因此它会给你一个错误.

window.function1 = function() {
  console.log('function 1');
}; window.project = 'test';

这里因为你在匿名函数之后有一个分号,js引擎可以弄清楚这些是两个不同的语句.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...