簡體   English   中英

JavaScript三元運算符轉換為完整的if / else語句問題

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM