从其他函数调用时,push将不起作用

时间:2019-03-04 10:06:31

标签: javascript

我不知道为什么当从这样的另一个函数中调用一个值时,推入系统不起作用:

var array=['alice','why'];
check(array);

function check(array) {
  var word = array[0].split("");
  again(word)
}

var already = [];

function again(word) {
  newWord = word.join("");
  console.log(word)
  console.log(newWord)
  console.log(typeof newWord)
  already.push(newWord);
}

如果我在函数内插入一个单词,它将起作用。像这样:

var already = [];
again();

function again() {
  word = ['a','l','i','c','e']
  newWord = word.join("");
  console.log(word)
  console.log(newWord)
  console.log(typeof newWord)
  already.push(newWord);
  console.log(already)
}

问题出在哪里?我不知道...
正如您在示例中看到的那样,两个示例的单词和类型均相同

4 个答案:

答案 0 :(得分:1)

在初始化already.push(newWord);之前,将调用var already = [];

如果这样放置,它将起作用。

var array = ['alice', 'why'];
var already = [];
check(array);

function check(array) {
  var word = array[0].split("");
  again(word)
}

function again(word) {
  newWord = word.join("");
  console.log(word)
  console.log(newWord)
  console.log(typeof newWord)
  already.push(newWord);
}

答案 1 :(得分:1)

在顶部定义已经array。之所以给出undefined,是因为代码先到达数组,然后再定义。

var already = [];
var array=['alice','why'];
check(array);

function check(array){
  var word = array[0].split("");
  again(word)
}
	
function again(word){
  var newWord = word.join("");
  console.log(word)
  console.log(newWord)
  console.log(typeof newWord)
  already.push(newWord);
  console.log(already)
}

答案 2 :(得分:1)

函数将被提升到顶部,同样适用于变量声明(不是赋值)。在再次调用函数时,已定义的变量尚未定义。在函数中使用之前,声明并初始化变量。

答案 3 :(得分:0)

在使用Activity.overridePendingTransition(...)之前,应先定义它。

already