我有以下三元声明:
$.history.init(function(url) {
load(url == "" ? "#some-page" : url);
});
我已将其重写为:
$.history.init(function(url) {
load(
if( url == ""){ url = "#some-page"
} else { url = url }
);
});
我现在第3行if(url == "")
上的错误,但我不明白是什么错误
任何建议都非常感谢。
答案 0 :(得分:6)
在JavaScript中,if
不是表达式。它不返回值,也不能放入函数调用中。也就是说,这是无效的:
func(if (a) { ... } else { ... });
这是if
和?:
之间的主要区别 - 运算符是一个表达式并返回一个值; if
是一个声明,不返回一个值,不能在任何地方使用。
如果你必须避免使用三元运算符,最好的办法就是:
if (url == "") {
url = "#some-page";
}
load(url);
使用||
:
function (url) {
load(url || "#some-page");
}
这是编写代码的最短且最惯用的方法。
答案 1 :(得分:1)
if
表达式在JS中不返回任何内容。所以这基本上是load(undefined)
。
请改为尝试:
if (url === '') {
url = '#some-page';
}
load(url);
请注意,根本不需要else
,因为如果值存在,则无需更改。
答案 2 :(得分:0)
将其重写为
$.history.init(function(url) {
if( url == ""){
url = "#some-page";
}
load( url );
});
答案 3 :(得分:0)
您的重写代码无效。试试这个:
$.history.init(function(url) {
if(url == "") {
load("#some-page");
} else {
load(url);
}
});
答案 4 :(得分:0)
您需要if
语句超出load
函数,即
$.history.init(function(url) {
if (url === "") {
url = "#some-page";
}
load(url);
});
请注意,您不需要else
子句,因为url = url
是一项冗余操作。