我正在尝试验证输入:如果num是除整数或整数格式的字符串以外的其他任何内容,则抛出TypeError。当我尝试验证输入内容时,一切正常:
function prefill(n, v) {
let testArr = [];
let num = n;
//input validation
if(~~num != num || typeof num == 'boolean' || +num < 0) throw new
TypeError(num + ' is invalid')
else {
for (let i = 0; i < +n; i++) {
testArr.push(v);
}
return testArr;
}
}
但是当我尝试这种方式时,
if(Number(num) != num || +num < 0)
我遇到了此错误“致命错误:CALL_AND_RETRY_LAST分配失败-JavaScript堆内存不足”
答案 0 :(得分:0)
更新后的答案
有多少个元素将被推入数组? 按位“ ~~”比较将其解析为32位结果。最多2 ^ 31个项目。
Number()将为您提供一个浮点数,该浮点数可以潜在地在循环中运行该浮点并按“ v”键1.7976931348623157e + 308(Number.MAX_VALUE)次。那迟早会使您的内存不足。