首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将func作为arg传递到javascript的另一个函数中

将func作为arg传递到javascript的另一个函数中
EN

Stack Overflow用户
提问于 2016-01-22 20:38:45
回答 1查看 34关注 0票数 1

这是我的代码:

代码语言:javascript
复制
//Player Loadout
//Version 1.0 by Madi Magdy

function Player(name,sex,side) {
    this.name = name;
    this.sex = sex;
    this.side = side;
}

//var newPlayer = new Player(prompt("Please enter your name"),prompt("Please enter your sex"),prompt("Please enter your nationality"));

//console.log("Hello " + newPlayer.name + "!");

function Class(classType,mainWeapon,sideWeapon) {
    this.classType = classType;
    this.mainWeapon = mainWeapon;
    this.sideWeapon = sideWeapon;
}
assaultClass = new Class("Assault","M416","M9");
engineerClass = new Class("Engineer","AK5C","P226");
reconClass = new Class("Recon","SRR61","Deagle44");
supportClass = new Class("Support","M249","M1911");

classChooser = function(playerChoice) {
    if (playerChoice === assaultClass.classType) {
        console.log("You chose the " + assaultClass.classType + " " + "class! Your default weapons are " + assaultClass.mainWeapon + " " + "and " + assaultClass.sideWeapon);
    }
    else if (playerChoice === engineerClass.classType) {
        console.log("You chose the " + engineerClass.classType + " " + "class! Your default weapons are " + engineerClass.mainWeapon + " " + "and " + engineerClass.sideWeapon);
    }
    else if (playerChoice === reconClass.classType) {
        console.log("You chose the " + reconClass.classType + " " + "class! Your default weapons are " + reconClass.mainWeapon + " " + "and " + reconClass.sideWeapon);
    }
    else if (playerChoice === supportClass.classType) {
        console.log("You chose the " + supportClass.classType + " " + "class! Your default weapons are " + supportClass.mainWeapon + " " + "and " + supportClass.sideWeapon);
    }


};

classChooser(prompt("Please choose your class! Type in Assault or Engineer or Recon or Support!"));


classWeapons = function(weapon,attach,camo) {
    this.weapon = weapon;
    this.attach = attach;
    this.camo = camo;
};

yourClassWeapons = new classWeapons(prompt("Choose your weapon"),prompt("Choose your weapon attachment"),prompt("Choose your camouflage color"));

var classChosen = function(yourChosenClass) {
    if (yourChosenClass === assaultClass.classType) {
        console.log("Your weapons are listed as follows");
        console.log(yourClassWeapons);
    }
    else {
        console.log("NOPE");
    }
};

classChosen(classChooser()); //I also tried classChosen(classChooser);

当我试图将classChooser函数作为参数传递到我的classChosen函数中时,当提示时输入字符串“攻击”,在if之后的语句永远不会执行,但else会执行。我犯了什么错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-22 21:01:06

主要的问题是,您没有将您认为要传递的内容传递给classChosen。按照它的方式,变量yourChosenClassundefined,这就是它不等于assaultClass.classType的原因。

您需要存储播放机选择的值,或者从classChooser返回它。另外,如果classChooser的提示符是函数的一部分,而不是作为参数传递,对您的代码来说会好得多。所以可能是这样的:

代码语言:javascript
复制
classChooser = function() {
    var playerChoice = prompt("Please choose your class! Type in Assault or Engineer or Recon or Support!");
    if (playerChoice === assaultClass.classType) {
        console.log("You chose the " + assaultClass.classType + " " + "class! Your default weapons are " + assaultClass.mainWeapon + " " + "and " + assaultClass.sideWeapon);
    }
    else if (playerChoice === engineerClass.classType) {
        console.log("You chose the " + engineerClass.classType + " " + "class! Your default weapons are " + engineerClass.mainWeapon + " " + "and " + engineerClass.sideWeapon);
    }
    else if (playerChoice === reconClass.classType) {
        console.log("You chose the " + reconClass.classType + " " + "class! Your default weapons are " + reconClass.mainWeapon + " " + "and " + reconClass.sideWeapon);
    }
    else if (playerChoice === supportClass.classType) {
        console.log("You chose the " + supportClass.classType + " " + "class! Your default weapons are " + supportClass.mainWeapon + " " + "and " + supportClass.sideWeapon);
    }
    return playerChoice;
};

classChosen(classChooser());
// or...
// var playerChosenClass = classChooser();
// classChosen(playerChosenClass);

此外,选择武器也可以采用类似的方式:

代码语言:javascript
复制
weaponChooser = function() {
    var weapon = prompt("Choose your weapon");
    var attachment = prompt("Choose your weapon attachment");
    var camo = prompt("Choose your camouflage color");
    return new classWeapons(weapon, attachment, camo);
}

yourClassWeapons = weaponChooser();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34955558

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档