WHI*_*LOR 20 javascript node.js
我试图决定是否值得采用JavaScript无分号风格.
如果我有没有分号的JavaScript代码:
function(){
var first = 1
var second = 2
sum = 1 + 2
return sum
}
Run Code Online (Sandbox Code Playgroud)
它将在浏览器和Node.js中工作.
但是缩小(通过Uglify或Closure Compiler)代码在浏览器和Node.js中工作?
我读过JavaScript中的Semicolons是可选的.它说它应该工作.
尽管JavaScript中的分号是可选的,但强烈建议不要使用分号:
它使您的代码容易受到错误的攻击 删除空格(用于缩小): 试试这个:
var a = 1; var b = 7; var sum = a + b(a + b)
它缩小到这将导致错误var a=1,b=7,sum=a+b(a+b);,number is not a function.还有其他案例和这种情况.
更新:此错误不是由缩小造成的,但是,下一个是:
它会使您的代码容易受到缩小错误的影响:尝试:
var isTrue = true
function doSomething() { return 'yeah' }
function doSomethingElse() { return 'yes, dear' }
doSomething()
!isTrue && doSomethingElse()
Run Code Online (Sandbox Code Playgroud)
缩小为:
var isTrue=true;function doSomething(){return "yeah"}function doSomethingElse(){return "yes, dear"}doSomething()!isTrue&&doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
这导致:
SyntaxError: Unexpected token !
Run Code Online (Sandbox Code Playgroud)它使您的代码在方便性方面的可读性和可维护性降低:使用分号已被正确地建立为良好实践,并且训练有素的JavaScript开发人员会对试图逃避约定的代码感到困惑.
另一件事是,你必须问自己:你真正得到的是什么,省略了分号?
结论:通过缩小,我肯定会尝试使用JSLint的约定.我看到有些人在经过几个小时的尝试修复一个没有发生错误的错误,但是在缩小的代码中,最终会发现他们的JavaScript代码.不要把自己置于这种苦难之中; 分号一见钟情可能很难看,但是它们可以防止错误出现.