JavaScript 的创建者“我应该停止插入自动分号......”

尾随分号经常导致宗教战争。您可以在 Qiita 和其他 SNS 上找到许多此类战斗。

然而,令人惊讶的是,很少有人将这场战争的原因追溯到根本原因。用你发现的(以及引用这篇文章的文章)是关于。

以下是 JavaScript 中尾随分号的 JavaScript 创建者意见由这是一个介绍。请注意,这篇文章来自 2012 年,因此它可能包含缺失的链接或过时的发现。

地狱分号

每次看到你的评论,我都很难过。

有问题的代码,

  clearMenus()
  !isActive && $parent.toggleClass('open')

这段代码是因此,要进行minification,必须进行包括ASI在内的完整解析,检查clearMenus()后面的换行符的含义,删除换行符,同时插入分号。。

这是似乎有人认为这是一个错误牙齿.

仅供参考,我同意道格的观点。

和我,什么时候我也同意楼主的意见仅允许使用 &&,因为该语言源自 Java。if 语句绝对是更好的风格。换句话说,JSMin 是正确的立场。

但这种态度太特设了,无法解决“同时运行 ASI 和缩小”的问题。

.

TC39 正在考虑使用! 作为中缀运算符。这段代码迟早会坏掉。了解如何正确使用分号。

! 作为中缀运算符是的,目前还没有正式的语法,可能是另一种语法。

然而,正如 Doug 所说,! 既不是句子的结尾也不是句子的开头。我想补充一点,这同样适用于换行符。

如果您查看[nlth],它会说明 ASI 和中缀运算符的一些惊人之处。也就是说,将来我们可能会添加新的中缀运算符,甚至是 is 和 isnt 这样的关键字运算符。他们的中缀运算符称为[no LineTerminator here]。

, [no LineTerminator here] 表示此处不允许终止,例如,return 右侧没有返回值的换行符。

中缀运算符未来功能的更改直接影响对换行符敏感的 ASI。

let flag = x is y;  // 
x ! p = v;          // 

Bootstrap 本身是一个很棒的库,但是 Bootstrap 的我同意道格的说法,即非常糟糕这个例子的第 1 行的终止符当然很重要。

这个故事的寓意是,ASI 只是一个纠正语法错误的程序。如果您将 ASI 编码为一种通用语法约定,那么您就有麻烦了。这是 ECMA-262 的经典示例。

a = b + c
(d + e).print()

[、/、一元+、-等也会出现类似的问题。请注意,如果没有错误,则不应用 ASI。

这个问题可能看起来微不足道,但当您开始组合 JavaScript 文件时,它会变得更加严重。这就是为什么 Dojo 和 IRC 等一些风格指南建议使用 ; 开始文件的原因,但它经常被遗忘。

在 1995 年 5 月的十天里,我希望我能更多地考虑换行符。

我敢肯定他们需要\ 或括号而不是ASI 来继续行。

然而,这艘船已经在 17 年前航行了。

为了在 JavaScript 中系统地处理换行符,根据是必须的。我但是 ES6 不太可能再出现这种情况了。

GitHub 问题充满了幼稚、理想主义和愚蠢的评论。编程语言什么时候不再有参数语法了?我所知道的每一种实用语言在格式上都有一定程度的***度,这使得它可以用得不好,用得也好。语言设计师尽管我们尽了最大的努力,但我们无法完全消除它。

我有两个论点。避免以影响 JavaScript 中换行符的方式使用 ASI。并且不要滥用&& 或|| 应该使用if 句子。

此外,鉴于 JavaScript 的无名且荒谬的悠久历史,我会说我会修复 JSMin。但在此之前,我想我会抛出一些尖刻的评论。

想法

所以 JavaScript 的创造者是一个分号***者。

然而,这篇文章写于 2012 年,之后isnt 运算符消失了,有很多库不使用分号,比如Vue,所以不知道现在的想法是什么。此外,文章的所有外部链接都已失效,所以我不知道除此之外还写了什么,而且我遇到了麻烦,因为我不知道我同意什么。

但是,总体论点是 ASI 只是减轻语法错误的一种手段,不应依赖。

顺便说一句,我个人总是使用分号,但比起分号,我更像是一个语法禁令。任何一种写法都是可能的,所以如果只能使用其中一种语法,无论是否附加,冲突都会得到解决。

好吧,这样的声明会破坏兼容性,所以它永远不会通过。

奖金

是一个引导问题。

"englishextra "如果我用 JSMin 缩小引导代码,它会中断。请将; 放入源代码中。"fat “不,这是一个 JSMin 错误。告诉 Doug。”Doug:“我不会因为这个疯狂和愚蠢的代码对 JSMin 做任何事情。”

之后,胖子和道格都没有出现,第三方之间的战斗持续了200多条评论。

脂肪是引导道格是是作者

JSMin 是一个通过删除注释和不必要的空格来减少 JavaScript 代码大小的库。出现上述问题是因为它没有被解析而是被正式转换。Doug 拒绝修复它,因为如果 bootstrap 正确放置 ;,这是一个不会发生的错误。即便如此,它还是说That is insanely stupid code.。

它在当时一定是一个有用的库,但自从出现了 Babel 和 gulp 等能够正确解析和缩小的缩小器,现在可以说它已经完成了它的作用。另一件事我要你做点什么。

原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308623458.html

46人参与, 0条评论 登录后显示评论回复

你需要登录后才能评论 登录/ 注册