我是编程新手,所以我知道您不能在其外部使用函数的变量。但我确实需要将对象存储在“调用”中。有什么解决方法可以从中提取数据? 我什至试图在函数外部声明调用,但它返回为空。
function itemCollection(question, answer) {
this.question = question;
this.answer = answer;
}
const empty = new itemCollection('empty', 'empty');
const empty2 = new itemCollection('1', '2');
function randomitem() {
let call = itemCollection[Math.floor(Math.random() * itemCollection.length)];
}
randomitem()
console.log(call);
错误:
未捕获的ReferenceError:调用未定义
答案 0 :(得分:2)
您可以返回值:
function itemCollection (question, answer){
this.question = question;
this.answer = answer;
}
const empty = new itemCollection('empty', 'empty');
const empty2 = new itemCollection('1', '2');
function randomitem() {
return itemCollection[Math.floor(Math.random() * itemCollection.length)];
// ^^^^^^ ---- added return keyword
}
let call = randomitem()
// ^^^^^^ ---- added variable "receiving" the value returned from the function call
console.log(call);
顺便说一句,由于使用了这种方法,您可以通过使randomitem
函数纯净而受益,也就是说,您可以将其所需的所有内容作为参数传递,而不必依赖于itemCollection
全局变量:
function randomitem(itemCol) { // added argument; renamed to itemCol just to differentiate
return itemCol[Math.floor(Math.random() * itemCol.length)];
}
let call = randomitem(itemCollection); // passed itemCollection as argument now
console.log(call);
答案 1 :(得分:0)
从函数返回值并将返回值存储在变量中并使用
function itemCollection(question, answer) {
this.question = question;
this.answer = answer;
}
const empty = new itemCollection('empty', 'empty');
const empty2 = new itemCollection('1', '2');
function randomitem() {
let call = itemCollection[Math.floor(Math.random() * itemCollection.length)];
return call
}
let call = randomitem()
console.log(call);
答案 2 :(得分:0)
最好的方法是返回randomitem
-s值
function randomitem() {
return itemCollection[Math.floor(Math.random() * itemCollection.length)];
}
const call = randomitem();
这是关于js作用域的一个小题。请阅读此。在js中非常重要 https://codeburst.io/javascript-a-basic-guide-to-scope-9682d57be6fc
还使用驼峰式命名法来命名变量,函数...,例如function randomItem() {...}