Возврат из функции возвращает undefined - PullRequest
1 голос
/ 01 августа 2020

У меня есть функция в определении класса, которая возвращает undefined. Вот класс:

class Lexer {
  // constructor and another method here
  make_tokens() {
    var tokens = [];
    // checking character values here
    console.log(tokens); 
    // Outputs [ Token { type: 'PLUS', value: undefined }, Token { type: 'PLUS', value: undefined } ] if I enter ++
    return tokens, null; // returns undefined, null
  }
  // make_numbers() goes here
}

Когда я искал ответы, я в основном возвращался из асинхронных функций, но моя функция не асинхронная.

Я не знаю, в чем проблема.

(извините, если я плохо его структурировал, но я новичок в StackOverflow и не знаю, как правильно структурировать вопрос)

Ответы [ 4 ]

0 голосов
/ 01 августа 2020

Во-первых, почему вы хотите вернуть null с другой переменной, но если да, то просто верните массив, состоящий из 2 элементов.

Вот код:

class Lexer {
  // constructor and another method here
  make_tokens() {
    var tokens = [];
    // checking character values here
    console.log(tokens); 
    // Outputs [ Token { type: 'PLUS', value: undefined }, Token { type: 'PLUS', value: undefined } ] if I enter ++
    return [tokens, null] ; // returns undefined, null
  }
  // make_numbers() goes here
}

Но может быть другим способом. Например, вы хотите вернуть null, если токены отсутствуют.

class Lexer {
  // constructor and another method here
  make_tokens() {
    var tokens = [];
    // checking character values here
    console.log(tokens); 
    // Outputs [ Token { type: 'PLUS', value: undefined }, Token { type: 'PLUS', value: undefined } ] if I enter ++
    return tokens | null; // returns undefined, null
  }
  // make_numbers() goes here
}
0 голосов
/ 01 августа 2020

Вы не можете вернуть несколько таких значений.

Я думаю, вы в конечном итоге просто вернете последнее значение, которое в данном случае null.

Почему вам нужно возвращать null а?

Если вы просто вернете tokens, он будет работать.

0 голосов
/ 01 августа 2020

Просто верните tokens

    class Lexer {
      // constructor and another method here
      make_tokens() {
        var tokens = [];
        // checking character values here
        console.log(tokens); 
        // Outputs [ Token { type: 'PLUS', value: undefined }, Token { type: 'PLUS', value: undefined } ] if I enter ++
        return tokens; // returns tokens
      }
      // make_numbers() goes here
    }
    
    const lexer = new Lexer();
    
    console.log(lexer.make_tokens());
0 голосов
/ 01 августа 2020

я не думаю, что вы могли бы вернуть значение таким образом.

class Lexer {
  // constructor and another method here
  make_tokens() {
    var tokens = [];
    // checking character values here
    console.log(tokens); 
    // Outputs [ Token { type: 'PLUS', value: undefined }, Token { type: 'PLUS', value: undefined } ] if I enter ++
    return [tokens, null]; // returns undefined, null
  }
  // make_numbers() goes here
}

const lexer = new Lexer();

console.log(lexer.make_tokens());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...