我在开源项目中多次看到人们写这样的东西:
if("" !== foo) {
// ...
}
为什么他们这样做呢?我的意思是你正在检查 foo&#39> 值是否为空字符串。我了解"" !== foo
和foo !== ""
的含义完全相同。但是编写棘手和不太明显的代码的原因是什么?
答案 0 :(得分:0)
我个人也不是这种风格的粉丝;然而,风格源于此:
if (x = "") { // **oops**, meant to do "==" but ended up assigning to "x"
// ...
}
" if"这里的陈述会导致意想不到的副作用。有许多语言,其中副作用和对布尔值的隐式转换使得以这种方式轻松拍摄自己(JavaScript和C ++浮现在脑海中)。为了避免这种情况,有些人具有反转排序的惯例,因为赋值给常量会产生更直接和明显的错误。我个人不喜欢这个,因为它使得代码读取不像英语("如果x等于空字符串"读取比#34更自然;如果空字符串等于x" ;),更好的工具(短线,源代码分析器等)可以有效地捕捉这些。