Gia*_*ino 3 javascript if-statement return comma
我来到这个代码,但我不太了解它的作用..
test.update = function(i)
{
return void 0 === i && (i = 3), 0 === i ? (..A..) : (..B..)
}
Run Code Online (Sandbox Code Playgroud)
(..A ..)和(..B ..)只是我尚未发布的其他代码行.
假设如果i有0值,函数将返回什么?
"void 0 === i &&(i = 3)"是做什么的?特别(i = 3).这是否意味着这if (void 0 === i)是真的i可以获得3,i将是3?逗号怎么样?我已经检查了这个问题,但我仍然没有得到它.
很抱歉这么多问题,但我想得到一个完整的答案,所以我完全可以理解发生了什么.
谢谢
好的,首先让我们根据运算符优先级设置括号:
return (((void 0) === i) && (i = 3)), ((0 === i) ? A : B)
Run Code Online (Sandbox Code Playgroud)
现在进行单一操作
void 0
Run Code Online (Sandbox Code Playgroud)
简单地回来undefined.我们也可以这样写:
undefined === i
Run Code Online (Sandbox Code Playgroud)
这显然检查是否i未定义.
i = 3
Run Code Online (Sandbox Code Playgroud)
看起来像是比较,但实际上它是一个返回的赋值3.到目前为止,该行查找是否i未定义,如果是,则为其分配值3.
现在,以下逗号本身就是一个运算符.它从左到右评估所有表达式并返回最后一个(最右边).在这种情况下,最后一个表达式是的比较0和i.意味着如果i是0在这一点上,整个表达式的返回值是true.
最后有一个条件运算符,这是一种简短的写入方式if .. else ...
到目前为止,这条线也可以写成:
if (i === undefined) {
i = 3;
}
if (i === 0) {
// return ( A )
}
else {
// return ( B )
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
734 次 |
| 最近记录: |