我有一个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时,我的变量不是argList [“foo”] ===“bar”,而是argList ===“bar”

最佳答案

要确保属性存在恕我直言,最好使用辅助方法,如:

  • typescript 猫王案例
  • Lodash _.get()方法
    if (_.get(argList, "foo") === "bar" || argList === "bar"){ // some code }

  • 仅当您尝试访问更深层次的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/

    10-08 22:14