Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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
将false转换为未定义(JavaScript)_Javascript - Fatal编程技术网

将false转换为未定义(JavaScript)

将false转换为未定义(JavaScript),javascript,Javascript,我有一个变量叫做isApp 如果isApp为真,我希望执行以下操作: login({os:"ios"}) 如果isApp为false,我希望调用: login() 如何在javascript中以一行程序的形式实现这一点 login(isApp&&{os:"ios"}) 不正确,因为如果isApp为false,它将使用false调用login。我想用“未定义”来称呼它 更新 我还有其他参数要登录,所以我不想写两次登录 例如: login({tokenId:200}, {os:

我有一个变量叫做isApp

如果isApp为真,我希望执行以下操作:

login({os:"ios"})
如果isApp为false,我希望调用:

login()
如何在javascript中以一行程序的形式实现这一点

login(isApp&&{os:"ios"})
不正确,因为如果isApp为false,它将使用false调用login。我想用“未定义”来称呼它

更新


我还有其他参数要登录,所以我不想写两次登录

例如:

login({tokenId:200}, {os:"ios"})
因此,我不喜欢这种解决方案:

isApp:login({tokenId:200}, {os:"ios"})?login({tokenId:200});
您可以使用基于布尔值
isApp
传递参数,然后添加其余参数:

login(isApp ? {os: "ios"} : undefined);

如何
登录(isApp?{os:ios}:未定义)

您可以使用条件运算符

isApp ? login({os:"ios"}): login();

您可以使用条件运算符传递
未定义的

login({tokenId:200}, isApp ? {os:"ios"} : undefined);
如果传递的参数数量很重要,则需要在两个分支中调用
login
,或者使用
apply

var args = [{tokenId:200}];
if (isApp) {
    args.push({os:"ios"});
}
login.apply(null, args);
isApp=![];//假的

登录({token:{id:200},!isApp?[[[]]/*-->未定义的*/:{os:'ios})我建议采用以下简约风格:

login(isApp && {os: "ios"} || undefined, secondParam);

它基本上与三元运算符相同,但风格不同:)

我还有其他参数要登录,所以我不想写两次登录。我还有其他参数要登录,所以我不想写两次登录。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@拉杰舒杰德:这是他的问题的答案。后来他编辑了他的问题。你可以在问题中看到编辑。用
[[]]
构造而不是简单地键入未定义的
文本有什么意义?