2014-11-25 67 views
-2

任何人都可以給我簡短的解釋給定JavaScript代碼中的返回語句。 請你應該看看我的小提琴:http://jsfiddle.net/m6mxdt9u/在給定javascript代碼中返回語句的簡短說明

function isPrime(value) { 
    if (!isPrime.answers) 
     isPrime.answers = {}; 

    if (isPrime.answers[value] != null) { 
     return isPrime.answers[value]; 
    } 

    var prime = value != 1; // 1 can never be prime 
    for (var i = 2; i < value; i++) { 
     if (value % i == 0) { 
      prime = false; 
      break; 
     } 
    } 
    return isPrime.answers[value] = prime; 
} 

assert(isPrime(5), "5 is prime!"); 
assert(isPrime.answers[5], "The answer was cached!"); 

function assert(value, desc) { 
    var resultsList = document.getElementById("results"); 
    if (!resultsList) { 
     resultsList = document.createElement('ul'); 
     document.getElementsByTagName('body')[0].appendChild(resultsList); 
     resultsList.setAttribute('id', 'results'); 
    } 
    var li = document.createElement("li"); 
    li.className = value ? "pass" : "fail"; 
    li.appendChild(document.createTextNode(desc)); 
    resultsList.appendChild(li); 
} 

我在這一行奮鬥:

return isPrime.answers[value]; 

會有什麼上面的代碼的返回值,從哪裏去了?

+0

所有相關的代碼應該包含在問題本身中。 – Nit 2014-11-25 12:00:51

+1

返回值是'isPrime.answers [value]'並且它返回給函數的調用者。但那不是你真正要求的,是嗎? – Bergi 2014-11-25 12:02:53

回答

0

如果你問的是代碼的這個特殊部分:

if (isPrime.answers[value] != null) { 
    return isPrime.answers[value]; 
} 

然後,它會返回value是否素與否,基於緩存的值(保存在回答散列值)。這將是isPrime函數返回的值。

+0

實際上,如果在函數的返回語句中聲明另一個返回語句,則有兩個返回語句。那麼哪一個返回到調用者函數? – jswoody 2014-11-25 12:08:42

+0

第一個被執行。如果if條件爲真,那麼它就是那個,否則最後一個返回將是被執行的那個。請記住,當在JS中達到return語句時,它下面的任何東西(函數內部)都將被執行。 – Deleteman 2014-11-25 12:10:38

+0

不錯的解釋.. – jswoody 2014-11-25 12:16:33