【问题标题】:concat is not defined error when printing function to console将功能打印到控制台时未定义 concat 错误
【发布时间】:2021-09-15 21:38:32
【问题描述】:

运行以下代码时,我在下面遇到错误,该代码一直有效,直到发生此错误的最后一个函数。代码是从开始的函数中选择一个随机数和随机单词,然后在最终的函数中将它们连接成一个字符串,输出应该是这样的:7只快乐的猫在跳跃。

ReferenceError: concat 未定义

//function to generate and display to console Word 1 - Random Number.
function Word1(min, max) {
    min = Math.ceil(1);
    max = Math.floor(9);
    return Math.floor(Math.random() * (max - min)) + min;
}
const Random_Number = Word1()
console.log(Random_Number);

//Function to generate and display to console Word 2 - Random Emotion.
function Word2(word)
{
    return word[Math.floor(Math.random() * word.length)];
}

var word = ["Happiness", "Sadness", "Fear", "Disgust", "Anger", "Suprise"];
console.log(Word2(word));


//Function to generate and display to console Word 3 - Random plural noun.
function Word3(noun)
{
    return noun[Math.floor(Math.random() * noun.length)];
}

var noun = ["Noun", "Monday", "Program", "Pizza", "Computer", "Suprise"];
console.log(Word3(noun)+ "s");

//Function to generate and display to console Word 4 - Random verb.
function Word4(verb)
{
    return verb[Math.floor(Math.random() * verb.length)];
}

var verb = ["Accept", "Hope", "Jump", "Lend", "Relax", "Damage"];
console.log(Word4(verb));
 
//Function to create password one-line string.
function password(passWord)
{
    return passWord[concat(Word1 + " " + Word2 + " " + Word3 + " " + Word4)];
}
var passWord = password();
console.log(password);

【问题讨论】:

  • 您还没有定义concat 方法。这就是为什么它给出错误ReferenceError: concat is not defined

标签: javascript string random concatenation


【解决方案1】:

您需要解决的问题很少

1)如果你没有在函数Word1中使用minmax那你为什么要传递参数给它。

2)您应该将Word2(word)Word3(noun) + "s"Word4(verb) 的结果存储在一个变量中,以便您可以在代码中的任何位置访问它。

3) 由于您要连接所有单词的结果,因此您可以使用template literal as

`${Random_Number} ${w2} ${w3} ${w4}`

//function to generate and display to console Word 1 - Random Number.
function Word1(min, max) {
  min = Math.ceil(1);
  max = Math.floor(9);
  return Math.floor(Math.random() * (max - min)) + min;
}
const Random_Number = Word1();
console.log(Random_Number);
//-------------------------------------------------------------------------

var word = ["Happiness", "Sadness", "Fear", "Disgust", "Anger", "Suprise"];
//Function to generate and display to console Word 2 - Random Emotion.
function Word2(word) {
  return word[Math.floor(Math.random() * word.length)];
}

const w2 = Word2(word);
//-------------------------------------------------------------------------

var noun = ["Noun", "Monday", "Program", "Pizza", "Computer", "Suprise"];
//Function to generate and display to console Word 3 - Random plural noun.
function Word3(noun) {
  return noun[Math.floor(Math.random() * noun.length)];
}

const w3 = Word3(noun) + "s";
//-------------------------------------------------------------------------

var verb = ["Accept", "Hope", "Jump", "Lend", "Relax", "Damage"];
//Function to generate and display to console Word 4 - Random verb.
function Word4(verb) {
  return verb[Math.floor(Math.random() * verb.length)];
}

const w4 = Word4(verb);
//-------------------------------------------------------------------------

//Function to create password one-line string.
function password() {
  return `${Random_Number} ${w2} ${w3} ${w4}`;
}
var generatedPassword = password();
console.log(generatedPassword);

我想进一步简化程序

const generateRandomNumber = (arr) => Math.floor(Math.random() * arr.length);

const Word1 = (min, max) => Math.floor(Math.random() * (max - min)) + min;
const Word2 = (word) => word[generateRandomNumber(word)];
const Word3 = (noun) => noun[generateRandomNumber(noun)];
const Word4 = (verb) => verb[generateRandomNumber(verb)];

const Random_Number = Word1(1, 9);
//-------------------------------------------------------------------------
var word = ["Happiness", "Sadness", "Fear", "Disgust", "Anger", "Suprise"];
const w2 = Word2(word);
//-------------------------------------------------------------------------

var noun = ["Noun", "Monday", "Program", "Pizza", "Computer", "Suprise"];
const w3 = Word3(noun) + "s";
//-------------------------------------------------------------------------

var verb = ["Accept", "Hope", "Jump", "Lend", "Relax", "Damage"];
const w4 = Word4(verb);
//-------------------------------------------------------------------------

//Function to create password one-line string.
const password = () => `${Random_Number} ${w2} ${w3} ${w4}`;
var generatedPassword = password();
console.log(generatedPassword);

你可以进一步简化

const generateRandomNumber = (len) => Math.floor(Math.random() * len);

const Word1 = (min, max) => Math.floor(Math.random() * (max - min)) + min;
const getWord = (arr) => arr[generateRandomNumber(arr.length)];

const Random_Number = Word1(1, 9);
//-------------------------------------------------------------------------
var word = ["Happiness", "Sadness", "Fear", "Disgust", "Anger", "Suprise"];
const w2 = getWord(word);
//-------------------------------------------------------------------------

var noun = ["Noun", "Monday", "Program", "Pizza", "Computer", "Suprise"];
const w3 = getWord(noun) + "s";
//-------------------------------------------------------------------------

var verb = ["Accept", "Hope", "Jump", "Lend", "Relax", "Damage"];
const w4 = getWord(verb);
//-------------------------------------------------------------------------

//Function to create password one-line string.
const password = () => `${Random_Number} ${w2} ${w3} ${w4}`;
var generatedPassword = password();
console.log(generatedPassword);

这是最干净的代码

const generateRandomNumber = (min, max) =>
  Math.floor(Math.random() * (max - min)) + min;

const getWord = (arr) => arr[generateRandomNumber(0, arr.length)];

const Random_Number = generateRandomNumber(1, 9);
//-------------------------------------------------------------------------
var word = ["Happiness", "Sadness", "Fear", "Disgust", "Anger", "Suprise"];
const w2 = getWord(word);
//-------------------------------------------------------------------------

var noun = ["Noun", "Monday", "Program", "Pizza", "Computer", "Suprise"];
const w3 = getWord(noun) + "s";
//-------------------------------------------------------------------------

var verb = ["Accept", "Hope", "Jump", "Lend", "Relax", "Damage"];
const w4 = getWord(verb);
//-------------------------------------------------------------------------

//Function to create password one-line string.
const password = () => `${Random_Number} ${w2} ${w3} ${w4}`;
var generatedPassword = password();
console.log(generatedPassword);

【讨论】:

  • 感谢回复,问题已解决。我是一名刚刚学习 JavaScript 的学生(并且是 stackoverflow 的新手),所以这些信息非常方便!
  • @MadMike 我已经添加了干净的版本。看看它是否干净、易于理解且易于调试。
  • 只看一步一步的简化。它将帮助您编写干净的代码
【解决方案2】:

你需要这样写代码

   function password(passWord)
{
    return passWord[Word1.concat(Word2 + " " + Word3 + " " + Word4)];
}

【讨论】:

  • Word1 是一个函数。你怎么能在上面使用concat
猜你喜欢
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
相关资源
最近更新 更多