【问题标题】:how to use if in a function in knockout js?如何在淘汰赛js的函数中使用if?
【发布时间】:2014-08-28 07:16:03
【问题描述】:

我的函数中有一个条件。我想根据另一个变量设置一个变量的值是真还是假,无论它是空的还是不是在淘汰赛js中?

 self.editData = function (data) { 
     self.id(data.id());
     self.nscto(data.nscto());
     if (nscto != null && "".equals(nscto)){
         self.view(true)
     }
 }

我在这里写 if 条件,就像我们在 java 语言中使用的那样,我想在淘汰赛中使用这个场景,我该怎么做?

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

    有很多方法可以做你想做的事:

    if ( null != self.nscto() && "" === self.nscto() )
    {
        self.view(true)
    }    
    

    if ( null != self.nscto() && self.nscto().length === 0 )
    {
        self.view(true)
    }
    

    或更简单的

    self.view( null != self.nscto() && "" === self.nscto() )
    

    【讨论】:

    【解决方案2】:

    您使用了两个不同的变量(nsctnsc)和一个不存在的运算符(=!)。条件的最后一部分将被解释为赋值:nsc = (!"")

    另外,逻辑是错误的,不存在同时为 null 和空字符串的值,因此条件始终为真。您可以改用 && 运算符:

    if (nsct != null && nsct != "") {
      self.view(true);
    }
    

    如果您想在条件不成立的情况下将其设置为 false,那么您也可以使用 else

    if (nsct != null && nsct != "") {
      self.view(true);
    } else {
      self.view(false);
    }
    

    您也可以通过使用条件的值来做到这一点:

    self.view(nsct != null && nsct != "");
    

    【讨论】:

    • 我想在淘汰赛js中使用它是不是它的有效语法
    • @user2142786:是的。 Knockout 只是一个 Javascript 库,它没有任何自己的语法。
    • 是否定义了nsct/nscto?它不像你的代码显示的那样。我认为您打算检查self.nscto。在这种情况下,这个答案将无法正常工作,因为 observable 没有展开(我想这也是你所说的 Knockout 语法的意思)。因为我认为 Guffa 的最后一个代码块是最好的,我将用那个块来演示它:self.view(self.nscto() != null && self.nscto() != "");。如果您还想检查undefined(我认为您会这样做),这可以变得更加简单:self.view(self.nscto())。甚至可以说你根本不需要self.view
    • 另外,我觉得@Guffa 应该使用严格的比较运算符,因为您明确地检查空值和空字符串值。如果不需要严格的相等性,这支持我之前使用self.view(self.nscto()) 的观点。同意吗?
    【解决方案3】:

    你需要的写法

    self.editData = function (data) { 
       self.id(data.id);
       self.nscto(data.nscto);
       if (self.nscto() != null && self.nscto() == ""){
            self.view(true);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2020-06-22
      • 2013-10-29
      • 2018-08-13
      • 2013-08-14
      相关资源
      最近更新 更多