如果以三元形式阻止,如何编写此内容

How to write this if else block in ternary form

本文关键字:何编写 三元 如果      更新时间:2023-09-26

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

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

这似乎不起作用:

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

要回答这个问题:

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

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

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

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

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

试试这个:

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();
}
localStorage.getItem("txt") ? newNote(localStorage.getItem("txt"), localStorage.getItem("name")) : newNote();

你为什么要以如此丑陋的方式这样做?

只需检查您的newNote体是否设置了参数

function newNote(a, b) {
  a = a || 'default';
  b = b || 'default';
}
  var a= localStorage.getItem("txt")?newNote(localStorage.getItem("txt"),localStorage.getItem("name"):newNote();

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

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

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

我喜欢

@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");
    }
}