JavaScript 编码技术还是糟糕的代码?

标签 javascript coding-style idioms logical-operators short-circuiting

在调试别人编写的 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/

相关文章:

javascript - 为什么要将子模型添加到两个父模型中?

javascript - jQuery addClass() 到 ul :nth-child?

regex - 如何表示正则表达式数字范围(例如 1 到 12)?

c - 零初始化全局数据的位置

inheritance - Golang 和继承

丢球时出现 Javascript 错误

python - 执行多个函数,跟踪是否有返回 true 的函数

scala - 处理基类与派生类字段名称的惯用 Scala 方式?

当预期列表仅包含单个元素时获取列表元素的 Pythonic 方法?

Javascript:无响应的脚本错误