2016-07-09 2 views
1

keyget()에는 아래 링크 된 설명서에 따라 key이라는 매개 변수가 있습니다. 설명은 다음과 같습니다.indexedDB get() 메서드에서 'Number()'의 목적은 무엇입니까

검색 할 레코드를 식별하는 키입니다. 이는 IDBKeyRange 일 수도 있습니다.이 경우 함수는 해당 범위의 첫 번째 기존 값을 반환합니다.

아래 예제 코드에서 get(Number("1"))을 사용하면 레코드를 찾을 수 있습니다. get("1") 만 사용하면 결과가 비어 있습니다. (주/전용 키 'NUM'이며, 자동 증가합니다.) 나는 Indexed Database API 또는 검색하여 답을 찾을 수 없어

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; 
     } 
    }; 
} 

.

Number는 무엇을 수행합니까?

답변

3

숫자 생성자는 함수로 호출 될 때 (즉, new없이) 매개 변수를 숫자로 변환하고 해당 값을 반환합니다. 따라서 Number("1")1을 반환합니다.

명시 적으로 Number("1")을 코딩 할 필요는 없습니다. 당신은 단순히 1을 사용할 것입니다. 문자열 값을 얻을 수있는 경우 유용합니다. 귀하의 경우 API가 귀하의 키와 정확하게 비교하고 있으며 실제 키가 숫자 인 경우 어떤 문자열도 결코 ===이 될 수 없습니다.

단항 문자 +은 본질적으로 똑같습니다. 따라서 +"1"1입니다. 어떤 사람들은 조금 더 명백하기 때문에 Number()을 명시 적으로 전화하기를 선호합니다.

parseFloat() 기능은 숫자를 문자열로 변환되지만, Number() 생성자 또는 단항 + 달리, 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

관련 문제