在功能之外使用变量数据?

时间:2019-07-18 04:44:24

标签: javascript

我是编程新手,所以我知道您不能在其外部使用函数的变量。但我确实需要将对象存储在“调用”中。有什么解决方法可以从中提取数据? 我什至试图在函数外部声明调用,但它返回为空。

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:调用未定义

3 个答案:

答案 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() {...}