Javascript 如何在knockout js中的函数中使用if?

Javascript 如何在knockout js中的函数中使用if?,javascript,knockout.js,Javascript,Knockout.js,我的功能有问题。我想在另一个变量的基础上设置一个变量的值true或false,不管它是否为空,而不是在knockout js中 self.editData = function (data) { self.id(data.id()); self.nscto(data.nscto()); if (nscto != null && "".equals(nscto)){ self.view(true) } } 在这里,我

我的功能有问题。我想在另一个变量的基础上设置一个变量的值true或false,不管它是否为空,而不是在knockout js中

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

在这里,我写下如果我们在java语言中使用的条件,我想在击倒中使用这个场景,我该怎么做

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

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

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 != "");

你写它的方式你需要

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

有很多方法可以满足您的需求:

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

或者更简单

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

我想在knockout js中使用它,它的语法是否有效it@user2142786:是的。Knockout只是一个Javascript库,它没有自己的语法。是否定义了
nsct
/
nscto
?它并没有代码显示的那么远。我想你是想对照self.nscto检查一下。在这种情况下,这个答案将无法正确工作,因为可观察对象没有展开(我猜这也是您所说的击倒语法的意思)。因为我认为Guffa的最后一个代码块是最好的,所以我将用它来演示:
self.view(self.nscto()!=null&&self.nscto()!=”。如果您还想检查
未定义的
(我想您是这样做的):
self.view(self.nscto())
,那么这就更简单了。有人甚至会说,你根本不需要
self.view
。此外,我觉得@Guffa应该使用严格的比较运算符,因为你明确地检查空值和空字符串值。如果不需要严格的相等,那就支持我之前使用
self.view(self.nscto())
的观点。同意?你能回答这个问题吗?
self.view( null != self.nscto() && "" === self.nscto() )