2012-05-13 66 views
1

我只是想知道我爲什麼要使用這個方法返回一個函數:爲什麼使用此方法返回函數或值?

clusters.prototype.get_local_storage_data = function(data_key) { 
    return +(this.localStorage.getItem(data_key) || 1); 
}; 

什麼是+()在那裏做,爲什麼使用?有沒有更好的方法來返回函數或1如果函數得到的是null?

回答

4

在值強制該值成爲數字之前使用+。在上面的情況下,數據密鑰將被轉換爲數字(如果找到了),或者數字1將被返回。無論哪種方式,結果都會被轉換爲數字。

+null; // 0 
+"3.14"; // 3.14 
+1;  // 1 

它只是確保無論輸出是什麼,你會返回一個number

+1

我現在看到,它有在我的情況下派上用場,因爲返回值實際上是一個數字,而且將永遠是一個數字,至少這是我希望它是。 – Roland

+0

@Roland:'getItem'返回一個字符串:http://dev.w3.org/html5/webstorage/#storage-0 –

+0

我知道,但我存儲的是一個數字,所以在我得到它之後,使用' JSON.parse()'這是我存儲的相同的東西。它可能是一個對象或數組,因爲我正在使用'JSON.stringfy()'。或者我錯了? – Roland

0

+是那裏的結果轉換爲數值 -

typeof +"123" // "number" 

它的實現方式看起來蠻好的,並不需要改變。

0

+只是確保返回值是一個數字,否則1將是true而不是第一。它的快捷方式:

Number(expression) 
相關問題