генератор всегда возвращает одну и ту же ошибку в генераторе случайных предложений

#javascript

#javascript

Вопрос:

умм, это всегда странно возвращает предложение, которое не является тем, что я ищу. вот код

 function erase(){document.open()}
alert("welcome to random sentence genereator and your sentence is on the screenand in the console below")
var b =Math.floor(Math.random() * 5);
if (b="1"){var a=("i ")}
else if(b="2"){var a=("a bean ")}
else if(b="3"){var a =("a xbox ")}
else if(b="0"){var a =("sport drink ")}
else if (b="4"){var a =("some grass ")}
else if(b="5"){var a =("a rock ")}
var e=Math.floor(Math.random() * 4);
if(e="0"){var p =("fell on ")}
else if(e="1"){var p =("jumped on ")}
else if(e="2"){var p =("bounced over ")}
else if(e="3"){var p =("slid on")}
else if(e="4"){var p =("slipped on")}
var n=Math.floor(Math.random() * 6);
if(n="0"){var q=("a mountain ")}
if(n="1"){var q =("a candlestick ")}
else if(n="2"){var q =("a raw potato ")}
else if(n="3"){var q=("a book ")}
else if(n="4"){var q=("a glass bottle ")}
else if(n="5"){var q =("water ")}
else if(n="6"){var q =("fish soup ")}
var o=Math.floor(Math.random() * 3);
if(o="0"){var v =("in the dark")}
if (o="1"){var v =("in the light")}
if(o="2"){var v=("in the middle of nowhere")}
if(o="3"){var v=("in a giant lemon")}
document.write(a p q v)
  

почему это не работает и всегда странно возвращает предложение. пожалуйста, обратите внимание

Комментарии:

1. Потому что сравнение выполняется с помощью == или === . Нет = .

2. В стороне, учитывая, что на ваш вопрос уже есть ответ. Вот краткий совет: попробуйте отформатировать свой код. Вы можете установить такой инструмент, как Prettier, или сделать это с помощью этого инструмента онлайн: prettier.io/playground

3. Еще один совет: если вы инициализируете переменную вне ваших условных блоков if, вам не придется делать это несколько раз (т. Е. var a; if (b === 1) { a = "i " } ) и делает предполагаемую область переменной немного более понятной, потому что вы пытаетесь использовать ее вне блоков, в которых они определены.

Ответ №1:

Попробуйте следующий код:

 function erase() {
    document.open()
}
alert("welcome to random sentence genereator and your sentence is on the screen and in the console below")
var b = Math.floor(Math.random() * 5);
if (b === 1) {
    var a = ("i ")
} else if (b === 2) {
    var a = ("a bean ")
} else if (b === 3) {
    var a = ("a xbox ")
} else if (b === "0") {
    var a = ("sport drink ")
} else if (b === 4) {
    var a = ("some grass ")
} else if (b === 5) {
    var a = ("a rock ")
}
var e = Math.floor(Math.random() * 4);
if (e === 0) {
    var p = ("fell on ")
} else if (e === 1) {
    var p = ("jumped on ")
} else if (e === 2) {
    var p = ("bounced over ")
} else if (e === 3) {
    var p = ("slid on ")
} else if (e === 4) {
    var p = ("slipped on ")
}
var n = Math.floor(Math.random() * 6);
if (n === 0) {
    var q = ("a mountain ")
}
if (n === 1) {
    var q = ("a candlestick ")
} else if (n === 2) {
    var q = ("a raw potato ")
} else if (n === 3) {
    var q = ("a book ")
} else if (n === 4) {
    var q = ("a glass bottle ")
} else if (n === 5) {
    var q = ("water ")
} else if (n === 6) {
    var q = ("fish soup ")
}
var o = Math.floor(Math.random() * 3);
if (o === 0) {
    var v = ("in the dark")
}
if (o === 1) {
    var v = ("in the light")
}
if (o === 2) {
    var v = ("in the middle of nowhere")
}
if (o === 3) {
    var v = ("in a giant lemon")
}
document.write(a   p   q   v)
  

Комментарии:

1. Случайное число всегда генерирует число, а не строку, вы сравниваете число со строкой, что может привести к ошибке в будущем проекте.

Ответ №2:

b это число, поэтому вы должны сравнить его с b == '3' или b === 3 . Кроме того, Math.floor(Math.random() * 5) генерирует число от 0 до 4 (и никогда 5), так что вы никогда не прибегнете к b == 5 этому.

Комментарии:

1. все еще возвращает то же самое

2. Это должно сработать, если вы измените каждое b="1" на b=="1" . И то же самое для e, n и o.

3. @codesforkids Да, это так .

4. @Ivar думаю, что использование == — плохая практика. Всегда используйте ===

5. @RahulGurujala Мой пример просто для того, чтобы показать, что это должно сработать. Я в целом согласен с вами, что предпочтительнее строгое сравнение на равенство.