如何以三元形式写if else块

时间:2013-10-24 07:51:31

标签: javascript

我怎么能把它写成三元形式:

  if (localStorage.getItem("txt")) {
    newNote(localStorage.getItem("txt"), localStorage.getItem("name"));
  } else {
    newNote();
  }

这似乎不起作用:

newNote(localStorage.getItem("txt") ? localStorage.getItem("txt"), localStorage.getItem("name") ? newNote();

7 个答案:

答案 0 :(得分:2)

试试这个:

var note = localStorage.getItem("txt")?newNote(localStorage.getItem("txt"), localStorage.getItem("name")):newNote();

语法为boolean?expr1:expr2;

但我建议使用这样的东西:

var note=getNode(localStorage.getItem("txt"),localStorage.getItem("name"));
...
function getNode(txt,name){
  return txt.length>0?newNote(txt,name):newNode();
}

答案 1 :(得分:2)

回答这个问题:

localStorage.getItem("txt")
  ? newNote(localStorage.getItem("txt"), localStorage.getItem("name"))
  : newNote();

但说实话,我不明白为什么要以这种方式完成,它的可读性较差。我只是以一种方式创建newNote函数,如果给出的参数是null,它就像没有参数的newNote()。在这种情况下,您可以致电:

newNote(localStorage.getItem("txt"), localStorage.getItem("name"))

主代码和if函数中没有任何newNote

function newNote(text, name) {
    if (text === null) {
        // alias to `newNote()`
    } else {
        // do whatever with `text` and `name`
    }
}

答案 2 :(得分:1)

localStorage.getItem("txt") ? newNote(localStorage.getItem("txt"), localStorage.getItem("name")) : newNote();

答案 3 :(得分:1)

为什么你会以这种丑陋的方式做到这一点?

如果参数设置了

,只需检查newNote正文
function newNote(a, b) {
  a = a || 'default';
  b = b || 'default';
}

答案 4 :(得分:0)

  var a= localStorage.getItem("txt")?newNote(localStorage.getItem("txt"),localStorage.getItem("name"):newNote();

答案 5 :(得分:0)

您不需要条件运算符。试试这个:

var txt = localStorage.getItem("txt");
newNote(txt, txt && localStorage.getItem("name"));

如果txtundefined,那么newNote将在没有任何参数的情况下被调用,如果是:txtname

答案 6 :(得分:0)

我喜欢@ ZER0建议的方式,但我会这样做。

只是为了简化阅读我会将localStorage.getItem("txt")localStorage.getItem("name")分配给变量:

var a = localStorage.getItem("txt");
var b = localStorage.getItem("name");

test(a ? [a, b] : []);

function test(options){
    if(options.length > 0){
        alert("a");
    }else{
        alert("ab");
    }
}