JavaScript三元运算符转换为完整的if/else语句问题

Ila*_*sda 3 javascript jquery if-statement ternary-operator

我有以下三元声明:

$.history.init(function(url) {
        load(url == "" ? "#some-page" : url);
});
Run Code Online (Sandbox Code Playgroud)

我已将其重写为:

$.history.init(function(url) {
         load( 
               if( url == ""){ url = "#some-page"
               } else { url = url }
         );
 });
Run Code Online (Sandbox Code Playgroud)

我现在是第3行的错误if(url == ""),但我不明白是什么错误.
任何建议都非常感谢.

Tik*_*vis 6

在JavaScript中,一个if表达.它不返回值,也不能放入函数调用中.也就是说,这是无效的:

func(if (a) { ... } else { ... });
Run Code Online (Sandbox Code Playgroud)

这是if和之间的主要区别?:- 运算符是一个表达式并返回一个值; if是一个声明,并没有返回值,不能随处使用.

如果你不得不避免使用三元运算符,最好的办法就是:

if (url == "") {
  url = "#some-page";
} 

load(url);
Run Code Online (Sandbox Code Playgroud)

您还可以使用||以下方法实现相同的效果:

function (url) {
  load(url || "#some-page");
}
Run Code Online (Sandbox Code Playgroud)

这是编写代码的最短且最惯用的方式.