【问题标题】:Conditional variable assignment without else没有 else 的条件变量赋值
【发布时间】:2017-02-27 16:15:58
【问题描述】:

我从服务中得到一个变量,它可以是真、假或未定义。如果是真假我必须保留它,否则我必须设置为真;

我正在研究如何制作它并使用了:

  obj.foo != false && (obj.foo = true);

有没有最好的制作方法?我的意思是,我可以使用三元运算符,但在某些情况下我的变量已经是 false/true,那么我不需要三元的 else 语句。

【问题讨论】:

  • 您在 if 语句中分配它。发布整个 sn-p。
  • obj.foo = obj.foo !== undefined ? obj.foo : true
  • 可能是这样的? foo === undefined || foo === true

标签: javascript variables variable-assignment


【解决方案1】:

我认为这会起作用:foo === undefined || foo

var foo = undefined;
console.log(foo === undefined || foo);

var foo = true;
console.log(foo === undefined || foo);

var foo = false;
console.log(foo === undefined || foo);

【讨论】:

  • 你甚至可以试试foo === undefined || foo
【解决方案2】:

这样的事情会起作用:

function invokeMe () {
  var objectsArray = [{name: "object1", trueOrNot: true}, 
                {name: "object2", trueOrNot: false},
                {name: "object3", trueOrNot: ''}
               ];
  objectsArray.forEach(function (object) {
  object.trueOrNot = object.trueOrNot !== false ? true : false;
  console.log(object);
});
}

invokeMe();

Jsfiddle

【讨论】:

  • 代码总是将值设置为 true,不是吗?
  • 否 - 只有当 obj.foo = undefined (或者它的实际值从一开始就为真)时,才会将值设置为真。正如我对帖子的理解,如果它是 FALSE,则该值不应该为真。因此,如果 obj.foo = false,此代码只会将 obj.foo 设置为等于其实际值 - 即为 false。 :)
  • 总结:如果 Obj.foo = true,obj.foo 将保持为 true。如果 obj.foo = false,则 obj.foo 将保持为 false。如果 obj.foo = undefined,则 obj.foo 将被设置为 true。
  • 嗯,看来你是对的 - 我过去可能做过一些不同的事情,当我做这样的事情时,我记得。现在用类似的例子做了一个 Jsfiddle。编辑评论
猜你喜欢
  • 1970-01-01
  • 2012-10-03
  • 2015-01-26
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 2018-09-20
相关资源
最近更新 更多