[英]JavaScript ternary operator into full if/else statement issue
我有以下三元声明:
$.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 == "")
,但我不明白什么错误。
任何建议都非常感谢。
在JavaScript中, if
不是表达式。 它不返回值,也不能放入函数调用中。 也就是说,这是无效的:
func(if (a) { ... } else { ... });
这是if
和?:
之间的主要区别?:
- 运算符是一个表达式并返回一个值; if
是一个语句, 不返回值,并不能随处使用。
如果你不得不避免使用三元运算符,最好的办法就是:
if (url == "") {
url = "#some-page";
}
load(url);
您也可以使用||
实现相同的效果 :
function (url) {
load(url || "#some-page");
}
这是编写代码的最短且最惯用的方式。
if
表达式不返回JS中的任何内容。 所以这基本上是load(undefined)
。
试试这个:
if (url === '') {
url = '#some-page';
}
load(url);
请注意,您根本不需要else
,因为如果值存在,则无需更改。
将其重写为
$.history.init(function(url) {
if( url == ""){
url = "#some-page";
}
load( url );
});
您重写的代码无效。 试试这个:
$.history.init(function(url) {
if(url == "") {
load("#some-page");
} else {
load(url);
}
});
您需要if
语句在load
函数之外,即
$.history.init(function(url) {
if (url === "") {
url = "#some-page";
}
load(url);
});
请注意,您不需要else
子句,因为url = url
是一个冗余操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.