1

我在javascript中有以下代码行:

q && (c = q === "0" ? "" : q.trim());

这是什么意思?我知道这c等于空字符串或 q.trim() 结果,但这是什么意思q && ()

4

3 回答 3

5

JavaScript 优化布尔表达式。当qisfalse时,表达式的右侧与结果无关,因此根本不执行。所以这是一个简短的形式:

if( q ) {
    c = q === "0" ? "" : q.trim()
}
于 2012-09-13T13:54:25.967 回答
3

它是对未定义/空/假变量的防范。

如果q未定义false或设置为null,则代码短路并且您不会收到抱怨的错误null.trim()

另一种写法是:

if(q) {
  c = q === "0" ? "" : q.trim();
}
于 2012-09-13T13:54:35.060 回答
0

您可以使用这种子句来检查 q 是否已定义。

于 2012-09-13T13:54:17.450 回答