反向比较/等于参数

时间:2014-05-02 09:55:11

标签: javascript optimization coding-style

我在开源项目中多次看到人们写这样的东西:

if("" !== foo) {
    // ...
}

为什么他们这样做呢?我的意思是你正在检查 foo&#39> 值是否为空字符串。我了解"" !== foofoo !== ""的含义完全相同。但是编写棘手和不太明显的代码的原因是什么?

1 个答案:

答案 0 :(得分:0)

我个人也不是这种风格的粉丝;然而,风格源于此:

 if (x = "") { // **oops**, meant to do "==" but ended up assigning to "x"
    // ...
 }

" if"这里的陈述会导致意想不到的副作用。有许多语言,其中副作用和对布尔值的隐式转换使得以这种方式轻松拍摄自己(JavaScript和C ++浮现在脑海中)。为了避免这种情况,有些人具有反转排序的惯例,因为赋值给常量会产生更直接和明显的错误。我个人不喜欢这个,因为它使得代码读取不像英语("如果x等于空字符串"读取比#34更自然;如果空字符串等于x" ;),更好的工具(短线,源代码分析器等)可以有效地捕捉这些。