【问题标题】:Can you add a condition to a variable declaration?您可以在变量声明中添加条件吗?
【发布时间】:2012-06-28 18:06:19
【问题描述】:

这对我来说没有意义,但我有一种感觉,我看到了一个使用这个的代码:

var abc = def || ghi;

我的问题是,这有效吗?我们可以在变量声明中添加条件吗?我想答案是否定的,但我有一个想法,我曾经在代码中看到过类似的东西。

【问题讨论】:

    标签: javascript variables declaration


    【解决方案1】:

    这给abc 提供def 的值,如果它不是假的(即不是falsenullundefined0 或一个空字符串),或者@ 的值987654327@如果没有。

    这相当于:

    var abc;
    if (def) abc = def;
    else abc = ghi;
    

    这通常用于选项:

    function myfunc (opts) {
        var mything = opts.mything || "aaa";
    }
    

    如果您调用myfunc({mything:"bbb"}),它会使用您提供的值。如果您什么都不提供,它将使用"aaa"

    在这种情况下,为了让调用者完全跳过参数,我们也可以用

    来启动函数
    opts = opts || {};
    

    【讨论】:

    • +1。说“def 计算结果为真”可能更准确,因为如果是 0、空字符串、false 等,那么 abc 将获得 ghi 的值。
    【解决方案2】:

    代码变量abc = def || ghi;

    是一样的
    if (def) { //where def is a truthy value
       var abc = def;
    } else {
       abc = ghi;
    }
    

    你想要一个像 if 语句这样的条件吗?

    if (xxx==="apple") { 
        var abc = def;
    } else {
        abc = ghi;
    }
    

    写成三元运算符是:

    var abc = (xxx==="apple") ? def : ghi;
    

    【讨论】:

    • 刚刚看到我昨天读到的一个活生生的例子(javascript提升)。即使def 在您的第一个示例中为假,abc 也不是全局的。我说的对吗?
    • abc 可以是全局的,这取决于它的定义位置。
    【解决方案3】:

    可以,可以在变量声明中添加条件

    你可以这样使用,

    function greet(person) {
        var name = person || 'anonymouse';
        alert('Hello ' + name);
    }
    greet('jashwant');
    greet();​
    

    jsfiddle demo

    【讨论】:

      【解决方案4】:

      好吧,看,这有点像,你要么检查一个是否为真。真实的将被退回。 :)

      var abc = def || ghi;
      

      相当于:

      var abc = return (def == true) or (ghi == true)
      

      【讨论】:

      • 小心。您的回答意味着此操作始终分配一个布尔值。这defghi 是布尔值的情况下。在所有情况下,abc 将假定 ghi 的值(无论该值是什么)除非 def 评估为 true。如果def 是“hello”,那么 abc 将是“hello”(不是 booelan)。如果def 是假/空/零/未定义/等等,并且ghi 是“世界”,那么abc 将是“世界”(同样,不是布尔值)。
      猜你喜欢
      • 2020-08-20
      • 2016-09-03
      • 2011-05-14
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2023-03-26
      相关资源
      最近更新 更多