如果我调用console.log(范围(1,10)),我会得到一个NaN数组。当进入第一个if语句时,参数third是未定义的,该语句的计算结果为True。当for循环运行时,count被添加到返回NaN的第三个。
为什么循环不会停止?相反,它循环并将NaN添加到数组中。
如果我设置if(第三个类型!==' undefined')第三个被转换为字符串,但javascript如何知道在for循环中运行时将第三个返回到数字?
function range(start,end,third){
var numberlist = [];
if(third !== 'undefined'){
if (start < end){
for (var count = start; count < end; count++){
numberlist.push(count + third);
}
}
else {
for (var count = start; count > end; count--){
numberlist.push(count + third);
}
}
}
else {
for (var count = start; count < (end + 1); count++){
numberlist.push(count);
}
}
return numberlist;
}
答案 0 :(得分:1)
undefined
是原始的,条件必须是third !== undefined
答案 1 :(得分:1)
实际上,您缺少typeof
运算符:
if(typeof third !== 'undefined'){
或者,您可以查看undefined
:
if(third !== undefined){
以下代码将检查third
是否为字符串undefined
:
if(third !== 'undefined'){
答案 2 :(得分:0)
从此条件if (third !== 'undefined'
中删除单引号:
function range(start, end, third) {
var numberlist = [];
if (third !== undefined) {
if (start < end) {
for (var count = start; count < end; count++) {
numberlist.push(count + third);
}
} else {
for (var count = start; count > end; count--) {
numberlist.push(count + third);
}
}
} else {
for (var count = start; count < (end + 1); count++) {
numberlist.push(count);
}
}
return numberlist;
}
console.log(range(1, 10))