我有一个 if
语句:
if (argList["foo"] === "bar" || argList === "bar"){
// some code
}
我想知道是否有更短或更优雅的方式来写这个条件。
为什么我要这样写这个声明? 我有一个名为 startTool(argList) 的函数,还有一个名为 startCreate(argList) 的函数。
mod.zsh_apiStartTool = function(argList, callback) {
// some code
if (argList["tool"] === "measure" || argList === "measure"){
//some code to start the tool
}
if (argList["tool"] === "scanning"|| argList === "scanning"){
// some code to start the tool
}
ZSH_JS_API_ERROR(callback);
return;
}
mod.zsh_apiStartCreate = function(argList, callback) {
// some code
if (argList["tool"] === "measure"){
mod.zsh_apiStartTool("measure")
}
if (argList["tool"] === "scanning"){
mod.zsh_apiStartTool("scanning");
}
ZSH_JS_API_ERROR(callback);
return;
}
所以当我从 startCreate 运行到 startTool 时,我的 var 不是 argList["foo"] === "bar"而是 argList === "bar"
最佳答案
为了确保属性存在,恕我直言,最好使用助手作为:
- typescript elvis 大小写
Lodash
_.get()
方法if (_.get(argList, "foo") === "bar"|| argList === "bar"){ //一些代码 }
只有当您尝试访问更深层次的 argList["foo"]["bar"] 时,这个问题才是关键的
JSON.stringify
如果您知道“bar”在您的对象中是一个确定性值(因此没有其他属性可以将其保存在 argList 中,则另一个选项可以是将对象字符串化并在此处查找值):
JSON.stringify(argListObj).includes("bar")
const argListObj = { foo: "bar" };
const argListString = "bar";
console.log(JSON.stringify(argListObj).includes("bar"));
console.log(JSON.stringify(argListString).includes("bar");
// Console logs true, true
关于javascript - 有没有更好的写法 if (argList[foo] === "bar"|| argList === "bar")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56457858/