如何在ternery操作员

时间:2017-04-19 07:28:13

标签: javascript ecmascript-6

我想为三元运算符内的变量赋值。

这是我的代码:

let myData;

{
    data ? myData = _.findLastIndex(users, function(o) { return o.user == 'pebbles';}) : ''
}

谢谢

3 个答案:

答案 0 :(得分:2)

如果您没有任何有用的“else”子句,请不要使用三元运算符;使用一个好的旧if

if (data) {
    myData = _.findLastIndex(users, function(o) { return o.user == 'pebbles';});
}

你甚至可以内联,如果你坚持做一个单行(虽然它对可读性不好):

if (data) myData = ...;

答案 1 :(得分:2)

如果由于某种原因需要空字符串data是假的,那么三元组确实是最短的方法:

删除{},并将分配移出三元语句:

let myData = data ? _.findLastIndex(users, function(o) { return o.user == 'pebbles';}) : '';

或者,(在我看来)更具可读性:

let myData = data ?
    _.findLastIndex(users, function(o) {
        return o.user == 'pebbles';
    }) :
    '';

如果您不需要空字符串,请使用if作为deceze answered

答案 2 :(得分:-3)

您可以将语句包装在()中并使其成为表达式。

var data = null;
var a = "foo";
data? (a= "null string") : (a = "")

console.log(a)

正如评论中所指出的,这种方法是一种不好的做法。这样做的原因是false状态将返回""但它没有分配给任何东西。这对其他人来说很难理解。

正确的方式是使用if

var data = null;
var a = "foo";
if(data)
  a = "Null string";

console.log(a)