JS файлът не работи

Ето кода в моя JS файл:

function arrayContains(array, value){
    return array.indexOf(value) > -1;
}
var possibleOptions = ["male", "female", "m", "f"];
var gender = prompt("What's your gender?","");
while(!arrayContains(possibleOptions, gender))
    gender = prompt("Invalid input. What's your gender?");
var name = prompt("What's your name?","");
var greeting = (gender == "male" || gender == "m") ? "Sup dude." : "Sup girl.";
alert("Hello, " + name + "! " + greeting);

Грешката, която получавам:

Line: 5
char: 1
Object expected.

Не мога да го разбера.


person Aviv Cohn    schedule 27.09.2014    source източник
comment
add ` before '. I think ''` е твой проблем   -  person Prashant Tapase    schedule 27.09.2014
comment
your code работи добре   -  person Mithun Satheesh    schedule 27.09.2014
comment
Този код работи без грешки: jsfiddle.net/cscr3bvu   -  person Quentin    schedule 27.09.2014
comment
@mithunsatheesh Microsoft JScript изпълнява това. Има ли значение?   -  person Aviv Cohn    schedule 27.09.2014
comment
@mithunsatheesh Стартирам го, като щракна два пъти върху него на работния плот. Има ли значение?   -  person Aviv Cohn    schedule 27.09.2014
comment
@AvivCohn — Да, има значение. Повечето JavaScript са написани за работа в уеб браузър. Предполагахме, че това е мястото, където го управлявате.   -  person Quentin    schedule 27.09.2014
comment
Ето един (нещо като) дублиран въпрос. Няма prompt глобален в Windows Scripting Host.   -  person Quentin    schedule 27.09.2014
comment
alert и prompt са методи на глобалния прозорец-обект (който съществува в браузър, но не и когато го стартирате чрез WSH)   -  person Dr.Molle    schedule 27.09.2014
comment
@Куентин, разбирам. Бих искал да знам: какъв е стандартният начин за кодиране и изпълнение на вашия Javascript код? Създайте .html файл и го вградете там? Или по друг начин?   -  person Aviv Cohn    schedule 27.09.2014
comment
@AvivCohn — JavaScript е език за програмиране. Можете да го използвате на много места. Страната на клиента в уеб страница е само най-често срещаната. Изборът кой ще използвате ще зависи най-вече от това, което трябва да постигнете, а не от това, което правят другите хора.   -  person Quentin    schedule 28.09.2014


Отговори (1)


Два проблема:

  1. Както бе споменато в коментарите, хостът на скрипта w/cscript.exe не поддържа нито prompt(), нито alert()
  2. JScript масивите нямат метод .IndexOf().

Трябва да навиете своя собствена:

function arrayContains(array, value){
    for (var i = 0, e = array.length; i < e; ++i) {
        if (array[i] === value) {
            return true;
        }
    }
    return false;
}

function prompt(p) {
    WScript.Stdout.Write(p + " > ");
    return WScript.StdIn.ReadLine();
}

function alert(s) {
    WScript.Echo(s);
}

var possibleOptions = ["male", "female", "m", "f"];
var gender = prompt("What's your gender?","");
while(!arrayContains(possibleOptions, gender))
    gender = prompt("Invalid input. What's your gender?");
var name = prompt("What's your name?","");
var greeting = (gender == "male" || gender == "m") ? "Sup dude." : "Sup girl.";
alert("Hello, " + name + "! " + greeting);

изход (конзола):

cscript 26073853.js
What's your gender? > neuter
Invalid input. What's your gender? > male
What's your name? > tarzan
Hello, tarzan! Sup dude.

cscript 26073853.js
What's your gender? > female
What's your name? > jane
Hello, jane! Sup girl.
person Ekkehard.Horner    schedule 27.09.2014