indexedDB get() 方法中 'Number()' 的目的是什么
What is the purpose of 'Number()' in indexedDB get() method
根据下面链接的文档,get()
有一个参数:key
。在描述中是:
Key identifying the record to be retrieved. This can also be an
IDBKeyRange in which case the function retreives the first existing
value in that range.
在下面的示例代码中,使用get(Number("1"))
,将找到该记录。仅使用 get("1")
,结果为空。 (primary/only键是'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 有什么作用?
Number 构造函数在作为函数调用时(即没有 new
)将参数转换为数字并 returns 该值。所以,Number("1")
returns 数 1
.
明确编码 Number("1")
没有意义;您只需使用 1
。如果您知道您可能会得到一个字符串值,这将很有用。在你的例子中,API 正在对你的密钥进行精确比较,如果真正的密钥是一个数字,那么它永远不会 ===
任何字符串。
一元运算符 +
本质上做同样的事情,所以 +"1"
也是 1
。有些人更喜欢显式调用 Number()
,因为它更显式。
parseFloat()
函数也将字符串转换为数字,但不同于Number()
构造函数或一元+
,parseFloat()
将允许在输入字符串末尾包含非数字内容:
console.log(parseFloat("123hello world")); // 123
console.log(+"123hello world"); // NaN
根据下面链接的文档,get()
有一个参数:key
。在描述中是:
Key identifying the record to be retrieved. This can also be an IDBKeyRange in which case the function retreives the first existing value in that range.
在下面的示例代码中,使用get(Number("1"))
,将找到该记录。仅使用 get("1")
,结果为空。 (primary/only键是'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 有什么作用?
Number 构造函数在作为函数调用时(即没有 new
)将参数转换为数字并 returns 该值。所以,Number("1")
returns 数 1
.
明确编码 Number("1")
没有意义;您只需使用 1
。如果您知道您可能会得到一个字符串值,这将很有用。在你的例子中,API 正在对你的密钥进行精确比较,如果真正的密钥是一个数字,那么它永远不会 ===
任何字符串。
一元运算符 +
本质上做同样的事情,所以 +"1"
也是 1
。有些人更喜欢显式调用 Number()
,因为它更显式。
parseFloat()
函数也将字符串转换为数字,但不同于Number()
构造函数或一元+
,parseFloat()
将允许在输入字符串末尾包含非数字内容:
console.log(parseFloat("123hello world")); // 123
console.log(+"123hello world"); // NaN