为什么我的范围函数显示一个未定义的值后,循环应该已经关闭
Why is my range function showing an undefined value after the the loop should have closed?
我正在尝试创建一个函数,该函数将存储从0到并包括x的所有整数在数组中。
function range(x){
for(var counter = 0; counter <= x; counter++)
show(counter);
}
var rangeArray = [range(4)];
show(rangeArray);
这将给我0、1、2、3和4(但不是在数组中),然后,好像在嘲笑我,把undefined放在数组中。
这个undefined是从哪里来的,为什么其他值不在数组中?
这就是你想要的:
function range(x){
var result = [];
for(var counter = 0; counter <= x; counter++) {
result.push(counter);
show(counter);
}
return result;
}
var rangeArray = range(4);
show(rangeArray);
当你没有显式调用return
时,JavaScript函数总是return undefined
。除了当你用new
称呼function
的时候。在这种情况下,函数返回this
(对已创建的对象的引用)。
function foo() {
}
foo() // returns undefined
new foo() // returns a reference to the object that was created
约定规定如果一个函数要用作构造函数,它必须大写
function Foo() {
this.x = 5;
// return this; // is implicit
}
这个约定是有用的,因为如果调用function Foo
而忘记使用new
来量化它,将会发生非常糟糕的事情。
x = 42
Foo() // this mistake is easier to spot if the function is capitalized
// x is now equal to 5.
x = 42
f = new Foo()
// x is still 42 and f.x is 5
为什么值不进入数组?
程序不能简单地将值打印到自己的源代码中。这样做将是令人难以置信的不可能推理。本页的其他答案都是针对你的具体问题的很好的解决方案
我们有一个叫做range的基本函数,它在功能上类似于python的range函数。这是一个简单而有效的数组生成器。
// Function to return array from 0-x
function range(x) {
// Start with an empty array
var arr = [],
i = -1;
// Loop through values from 0-X
for(;i++ < x;) {
// Add number to array
arr.push(i)
}
// Return array
return arr;
}
var rangeArr = range(5) //returns [0, 1, 2, 3, 4, 5]
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- $.每个jquery循环打印一个“;未定义的“;对于getJSON请求后的每个元素,网格数据都会完美地打印出来
- 使用arr[i]循环遍历数组==未定义
- 为什么在循环中返回时函数返回值未定义
- 未捕获的类型错误:未定义不是函数,在中为循环创建了对象
- Waypoint的循环,退出循环后属性未定义
- 对象在循环中运行时未定义,但在按顺序执行时未定义
- 使用while循环在printArray函数中获取一个额外的未定义值
- 如何使此循环工作?它's返回未定义的语言js
- Javascript数组中未定义的值是否使用任何内存或在for in循环中迭代
- 未捕获的typeerror无法读取属性'0'for循环中未定义的
- 使用jQuery'在数组中循环;s中的每一个都会在生成字符串时在开头产生一个未定义的值
- 嵌套的“for”循环 - 数组未定义
- 在 For 循环中的闭包中未定义
- javascript 中的框架对象循环是未定义的
- 为什么以下 forEach 数组循环未返回未定义
- 当在 Javascript 中使用许多 for 循环时,输出是未定义的
- 用于从许多带有“for”循环的URL中获取HTML信息的X射线使对象未定义
- 当我把它放到setInterval循环中时,event.clientY是未定义的
- querySelectorAll循环“未定义”