& # 39;未定义# 39;Javascript函数中的变量result
'undefined' result for variable in Javascript function
代码中的某些内容意味着我正在打印一个仅包含未定义值的数组,而不是我期望的随机数。
我的代码如下:
function List(max, min, numLists, numItems) {
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function () {
var fullArray = [];
var completeArray = [];
for (i = this.min; i < this.max; i++) {
fullArray.push(i);
}
for (i = 0; i < numItems; i++) {
var randomItem = Math.floor(Math.random() * (1 + (this.max - this.min)));
completeArray.push(fullArray[randomItem]);
}
console.log(completeArray);
}
}
var newList = new List(12, 100, 1, 15);
newList.generateLists();
代码应该打印一个介于最小值和最大值之间的随机数列表。我得到一个包含15个值的数组,但它们都是未定义的。我猜这意味着我的第一个"for"循环有问题?
如果有人有任何建议,我可以如何做得更好,请批评!
提前感谢。
您的参数列表中混淆了min
和max
。这将导致你的数字出现一个不可能的边界(大于100但小于12)。只需将第一行的参数从max,min
交换为min,max
。
function List(min,max,numLists,numItems){
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function (){
var fullArray = [];
var completeArray = [];
for ( i = this.min ; i<this.max ; i++) {
fullArray.push(i);
}
for ( i = 0 ; i<numItems ; i++) {
var randomItem = Math.floor(Math.random() * (1+(this.max-this.min)));
completeArray.push(fullArray[randomItem]);
}
console.log(completeArray);
}
}
var newList = new List ( 12 , 100 , 1,15);
newList.generateLists();
我认为你在启动newList
时交换了max和min的位置。
将行改为:
var newList = new List ( 100, 12 , 1,15);
您正在推送不包含任何内容的fullArray[randomItem]
。它从未初始化
function List(max, min, numLists, numItems) {
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function() {
var completeArray = [];
for (i = 0; i < numItems; i++) {
var randomItem = Math.floor(Math.random() * (1 + (this.max - this.min)));
completeArray.push(randomItem);
}
document.write(completeArray);
}
}
var newList = new List(12, 100, 1, 15);
newList.generateLists();
我想你的max和min参数顺序不对。您试图访问索引为负的fullArray
,因为要用一个较小的数字减去一个较大的数字。
function List(min,max,numLists,numItems){
this.max = max,
this.min = min,
this.numLists = numLists,
this.numItems = numItems,
this.generateLists = function (){
var fullArray = [];
var completeArray = [];
for ( i = this.min ; i<this.max ; i++) {
fullArray.push(i);
}
for ( i = 0 ; i<numItems ; i++) {
var randomItem = Math.floor(Math.random() * (1+(this.max-this.min)));
console.log(randomItem)
completeArray.push(fullArray[randomItem]);
}
console.log(completeArray);
}
}
var newList = new List ( 12 , 100 , 1,15);
newList.generateLists();
我认为max和min参数交换了
function List(max,min,numLists,numItems){
应为
function List(min,max,numLists,numItems){
替换这一行;
var randomItem = Math.floor(Math.random() * (1+(this.max-this.min)));
;
var randomItem = Math.floor(Math.random()*(fullArray.length)+1);
相关文章:
- 将函数的上下文应用于javascript变量
- 无法导出函数expressjs/requestjs中的变量
- 函数参数中的数据与指定变量之间的任何性能差异
- 将PHP变量传递给jQuery时遇到问题
- 如何通过ajax刷新JSF填充的javascript变量
- 参数变量出现ngTable指令问题
- 通过javascript重定向html传递php变量
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 全局变量和全局对象的属性之间有什么区别吗
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 值对象在某个变量发生更改后发生更改
- Javascript变量赋值|
- AngularJS-在JSON选择器中使用变量名
- Javascript计数器变量未显示正确的值
- delete关键字在全局变量上的不同行为
- Javascript: $result.rows.item(x)变量类型是什么?
- & # 39;未定义# 39;Javascript函数中的变量result
- 在promise中将变量设置为Parse Query的result只显示响应中的第一项
- 将PHP-SQL Result变量转换为Javascript对象
- if语句-Javascript将变量设置为result或nothing