在调试别人编写的 javascript 时,我遇到了一些以前从未见过的代码。这是一个示例:
function doSomething() {
//doing something here...
}
function doItNow() {
//other logic...
doSomething && doSomething(); // <=== What's this?
}
函数 doItNow() 中第二行的目的是检查 doSomething 是否存在然后调用它吗?像这样:
function doItNow() {
//other logic...
if (doSomething) {
doSomething();
}
}
JSLint 不喜欢它,我不希望我的应用程序中有错误代码。有什么见解吗?
最佳答案
这确实是一个“速记”。只有当左侧作为 if()
语句传递时,右侧才会执行。
Google Closure Compiler 和其他压缩器利用了这一点;如果您的输入是 if(a) a()
,它将导致 a&&a()
您可以对 ||
执行相同的操作,例如:
if( !a ){
alert('Not a');
}
可以写成
a || alert('Not a');
关于JavaScript 编码技术还是糟糕的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091558/