将false转换为未定义(JavaScript)
我有一个变量叫做isApp 如果isApp为真,我希望执行以下操作:将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:
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);
它基本上与三元运算符相同,但风格不同:)我还有其他参数要登录,所以我不想写两次登录。我还有其他参数要登录,所以我不想写两次登录。这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@拉杰舒杰德:这是他的问题的答案。后来他编辑了他的问题。你可以在问题中看到编辑。用[[]]
构造而不是简单地键入未定义的文本有什么意义?