Javascript变量保持未定义
Javascript variable stays undefined
我对这个脚本有一个问题,有些事情是错误的。rnumber保持未定义。该脚本应该返回并写入随机数列表中的所有不均匀数字。谁能告诉我我哪里做错了。提前感谢
var Rnumber = new Array();
for (i = 0; i<= 100;i++)
{
Rnumber[i] = Math.ceil(Math.random()*101);
// document.write(Rnumber[i] + "<br/>");
}
function unevenAndDivisible(Rnumber)
{
var remainder = new Array();
for (i = 0; i<= 100; i++)
{
remainder = parseInt(Rnumber[i])%2;
}
return remainder;
}
document.write(unevenAndDivisible());
更改为
var Rnumber = new Array();
for (i = 0; i<= 100;i++)
{
Rnumber[i] = Math.ceil(Math.random()*101);
// document.write(Rnumber[i] + "<br/>");
}
function unevenAndDivisible(Rnumber)
{
var remainder = new Array();
for (i = 0; i<= 100; i++)
{
remainder[i] = Rnumber[i]%2;
}
return remainder;
}
document.write(unevenAndDivisible(Rnumber));
,但现在我得到的结果:0 1 0 0 1 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1…
我只是想,也许我第一次问错了,从随机的r个数列表中写出所有的不等数然后我需要把它除以7然后返回。
编辑
几乎所有的问题都很清楚,谢谢大家。他们还剩下一个问题:在下面的代码中,它只从余数中取第一个不均匀的值,我希望它取所有不均匀的值到下一个if语句来检查%7。如果您自己运行它,可能会更好地看到问题
var Rnumber = new Array();
for (i = 0; i<= 100;i++)
{
Rnumber[i] = Math.ceil(Math.random()*101);
}
function unevenAndDivisible()
{
var remainder = [];
var answer = [];
for (i = 0; i<= 100; i++)
{
if (Rnumber[i]%2 !== 0)
{
remainder.push(Rnumber[i]);
for (c = 0; c <= remainder.length;c++)
{
if (remainder[c]%7 == 0)
{
answer.push(remainder[c]);
}
}
}
}
return answer;
}
answer = unevenAndDivisible();
document.write(answer);
问题解决了,谢谢大家
您不需要将Rnumber
传递给函数,因为它已经在作用域中可用:
function unevenAndDivisible()
{
var remainder = [];
for (i = 0; i<= 100; i++)
{
if (Rnumber[i]%2 !== 0) {
remainder.push(Rnumber[i]);
}
}
return remainder;
}
remainder = unevenAndDivisible();
console.log(remainder);
JS Fiddle demo.
编辑回应OP的问题(在对问题的评论中,上面):
…谁能解释一下这是什么意思:
var remainder = [];
当然,它是数组字面值表表法,等于:var remainder = new Array();
,它只是更简洁一点,我更喜欢节省自己的输入。我得到的印象,从JS Lint,每当我使用var x = new Array();
在上面的版本通常是首选(因为它抱怨否则),但我不知道为什么。
要么将Rnumber传递给函数unevenAndDivisible
,要么将其从参数列表中省略。因为它是一个参数,所以它比Rnumber的初始声明具有更大的局部作用域。
你的问题是行
function unevenAndDivisible(Rnumber)
你在传递Rnumber in作为一个参数,但是当你调用unevenAndDivisible()
你不是在传递它。因此,对于函数体Rnumber是未定义的(因为您没有传入任何内容)
下面的代码片段等价于你写的代码,可能会更好地解释
function unevenAndDivisible(xyz)
{
var remainder = new Array();
for (i = 0; i<= 100; i++)
{
remainder = parseInt(xyz[i])%2;
}
return remainder;
}
则称为
unevenAndDivisible(undefined)
要修复它,请从调用定义中删除实参
。定义为
function unevenAndDivisible()
1 -您没有定义Rnumber
值,这是函数参数。2 - in循环,你定义的余数被除数的值,并没有保存在数组中;试一试:
改变:
remainder = parseInt(Rnumber[i])%2;
remainder[i] = parseInt(Rnumber[i])%2;
var array = [],
i = 100;
while (i--) {
var random = Math.random()*i|0;
if(random % 2)
array.unshift(random);
}
alert(array);
- Socket.IO未定义变量
- 更改 Javascript 对象中所有未定义变量的值
- coffeescript,类未定义变量
- 使用下划线未定义变量时发生抛出/捕获错误
- 网络浏览器正在成为“;严格的“;用于Javascript中未定义变量的操作
- 使用window.location时未定义变量
- 传递给数据的未定义变量
- bizzare未定义变量
- JavaScript 中全局范围内存在未定义变量的原因是什么?
- JavaScript onClick 参数表示未定义变量
- 在指令中使用 $scope.$watch 处理未定义变量的替代方法
- 对于循环错误:未捕获的引用错误,未定义变量.怎么了
- JavaScript / YouTube API - 未定义变量 YT
- 未捕获的引用错误:在测试真实性时未定义变量
- 通过使用JavaScript“未定义”(变量),我们可以释放系统内存
- 与未定义变量相关的错误
- Angularjs 控制器中的未定义变量
- 角度解析:未定义变量
- BackboneJS Uncaught ReferenceError:未定义变量
- 使用Underscore JS部分和for循环的未定义变量对象