2016-07-09 9 views
1

keyget()には、以下にリンクされているドキュメントによると、説明では:indexedDB get()メソッドの 'Number()'の目的は何ですか

取得するレコードを識別するキーです。これは IDBKeyRangeでもかまいません。その場合、この関数はその範囲の最初の既存の 値を取得します。

下記のコード例では、get(Number("1"))を使用してレコードを検索します。 get("1")のみを使用すると、結果は空です。 (のみ/主キーは「NUM」で、自動インクリメントである。)

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

数値コンストラクタが関数として呼び出されたとき(すなわち、newなし)は、パラメータを数値に変換してその値を返します。したがって、Number("1")は数字1を返します。

Number("1")を明示的にコーディングする必要はありません。単に1を使用します。文字列値が得られるかもしれないことがわかっていると便利です。あなたのケースでは、APIはあなたのキーとの正確な比較を実行しており、実際のキーが数字の場合は決して===の文字列になりません。

単項式+演算子は基本的に同じものなので、+"1"1です。少し明示的であるため、​​を明示的に呼び出すことを好む人もいます。

parseFloat()機能は、文字列を数値に変換しますが、​​コンストラクタまたは単項+とは異なり、parseFloat()は、入力文字列の末尾に数字以外のコンテンツが可能になります。

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

Iデバッガの出力を見ると混乱しているはずです。したがって、 'store.get(1)'は最も簡単な使い方ですか? – David

+0

@Davidも 'store.get(1)'はキー '1'を持つレコードを必要とするなら、最も簡単なことです。 – Pointy

関連する問題