[英]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.