Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有void的return语句实现了什么?_Javascript - Fatal编程技术网

Javascript 带有void的return语句实现了什么?

Javascript 带有void的return语句实现了什么?,javascript,Javascript,我正在将一个缩小的游戏从web存档转换为typescript。我有以下功能 const C=(命令:KnownMovementKeySet)=>{ 如果( 3==game.myType&& (“斜视灯”==命令| |“斜视灯”==命令) ) { 返回C(“特殊”),无效C(“STRAFELEFT”==命令?“左”:“右”); } 如果(-1!==x.indexOf(命令)){ Network.sendKey(命令,true); } }; 返回语句在这里做什么?乍一看,这似乎无关紧要。然而,递归

我正在将一个缩小的游戏从web存档转换为typescript。我有以下功能

const C=(命令:KnownMovementKeySet)=>{
如果(
3==game.myType&&
(“斜视灯”==命令| |“斜视灯”==命令)
) {
返回C(“特殊”),无效C(“STRAFELEFT”==命令?“左”:“右”);
}
如果(-1!==x.indexOf(命令)){
Network.sendKey(命令,true);
}
};
返回语句在这里做什么?乍一看,这似乎无关紧要。然而,递归的本质让我相信我看到了一些我以前从未见过的古老逻辑。

void
计算为
未定义的
,逗号运算符从左到右计算,得出最终表达式的值。所以

return C("SPECIAL"), void C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
相当于

C("SPECIAL");
return void C("STRAFELEFT" === command ? "LEFT" : "RIGHT");

那么,
return
将退出
if
语句中的函数;这是一个有条件的返回,所以没有必要。
if
语句中的代码似乎等同于
C(“特殊”);C(“STRAFELEFT”==命令?“左”:“右”);返回,除非我缺少关于递归语义的内容。不知道为什么有人会用这种神秘的方式写它。请注意,当然,你永远不应该自己写这个=)
C("SPECIAL");
C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
return undefined;
C("SPECIAL");
C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
return;