2016-07-09 20 views
1

根據下面鏈接的文檔,get()有一個參數:key。在描述中是:indexedDB中的Number()的用途get()方法

鍵識別要檢索的記錄。這也可以是一個 IDBKeyRange,在這種情況下,該函數將檢索該範圍內的第一個現有的 值。

在下面的示例代碼中,使用get(Number("1")),將查找該記錄。僅使用get("1"),結果爲空。 (主/唯一的關鍵是「民」,是自動遞增。)

function removeRecord(num) { 
    var transaction = db.transaction(['queueStore'], 'readwrite'); 
    var store = transaction.objectStore('queueStore'); 

    // Check if the record exists & to identify the record 
    store.get(Number(num)).onsuccess = function(event) { 
     /* ^here  this works */ 
     var result = event.target.result; 
     if(result) { 
      number = result.number; 
     } 
    }; 
} 

我一直沒能找到答案在Indexed Database API或搜索。

Number完成了什麼?

回答

3

作爲函數調用的Number構造函數(即沒有0​​)將該參數轉換爲數字並返回該值。所以,Number("1")返回號碼1

明確地編碼Number("1")毫無意義;你只需使用1。如果你知道你可能會得到一個字符串值,這很有用。在你的情況下,API正在對你的密鑰進行精確的比較,如果真正的密鑰是一個數字,那麼它將永遠不會有任何字符串===

一元運算符+本質上是一樣的東西,所以+"1"也是1。有些人更願意明確地致電​​,因爲它更加明確。

parseFloat()功能將字符串轉換爲數字,但不像​​構造函數或一元+parseFloat()將允許在輸入字符串的結尾非數字內容:

console.log(parseFloat("123hello world")); // 123 
console.log(+"123hello world"); // NaN 
+0

我必須在查看調試器輸出時感到困惑。那麼'store.get(1)'是最簡單的用法嗎? – David

+0

@David well'store.get(1)'是最簡單的事情要做,如果你想記錄鍵'1',是的。 – Pointy