代码之家  ›  专栏  ›  技术社区  ›  APixel Visuals

Javascript/节点。JS-有可能有一个具有多个定义的var吗?

  •  0
  • APixel Visuals  · 技术社区  · 6 年前

    不使用数组就可以将变量定义为两个不同的东西吗?

    例如:

    var myVar = "asd" || "fgh" // or maybe it's "asd" && "fgh"?
    var message = "asdtest"
    var otherMessage = "fghtest"
    if (message === myVar + "test") {
       console.log("success!")
    }
    else if (otherMessage === myVar + "test") {
       console.log("success!")
    }
    
    5 回复  |  直到 6 年前
        1
  •  2
  •   Nicholas Tower    6 年前

    不,一个变量一次只能保存一件事。如果需要多个对象,则应使用数组。

    这行代码将评估 "asd" 看看它是不是真的,真的。因此,myVar设置为“asd”。如果相反,它是“falsy”,例如,如果你这样做了 var myVar = null || "fgh" ,然后将myVar设置为第二部分,从而使其等于“fgh”。

        2
  •  2
  •   Thilo    6 年前

    这只是一个定义。变量将分配给右侧表达式的值。原则上,这与

    var x = 1 + 2;
    

    怎样 || 工作原理是它是逻辑OR:它返回第一个 "truthy" value (例如非空字符串,所有值都是真实的,除非它们是 false , 0 , "" , null , undefined NaN ). 如果要将默认值设置为“缺失”值,例如:

    var size = specifiedSize || 100;
    

    在你的情况下,它只是 asd .

        3
  •  1
  •   Derek 朕會功夫    6 年前

    一个变量只能保存一个值。但是,变量可以引用数组或对象,后者可以包含多个值。

        4
  •  1
  •   dhilt    6 年前

    您可以使用对象或数组来存储所有可能的值:

    var myVarObj = {
      p1: "asd"
      p2: "fgh"
    };
    
    var myVarArr = ["asd", "fgh"];
    
    for (var property in myVarObj) {
        if (message === myVarObj[property] + "test") {
            console.log("success!");
        }
    }
    
    for (var value in myVarArr) {
        if (message === value + "test") {
            console.log("success!");
        }
    }
    
        5
  •  1
  •   guest271314    6 年前

    可以使用函数表达式

    var myVar = bool => bool ? "asd" : "fgh";
    
    console.log(myVar(1)); // `"asd"`
    console.log(myVar(0)); // `"fgh"`