-1

h1.nameコンソールに印刷しようとしているだけですが、ReferenceError: h1 is not definedエラーが発生しています。1、2、または 3 と入力しても、同じエラーが表示されます。私は何を間違っていますか?

function Hand(name, sChips) {
    this.name = name;
    this.sChips = sChips;
}

function start() {
var nHands = prompt("How many hands do you want to play?(1,2, or 3)");
var nHands = Number(nHands);
    if (0 < nHands < 4 ) {
        if (nHands === 1) {
            var h1 = new Hand("First Hand", 150000);
        }
        else if (nHands === 2) {
            var h1 = new Hand("First Hand", 75000);
            var h2 = new Hand("Second Hand", 75000);
        }
        else if (nHands === 3) {
            var h1 = new Hand("First Hand", 50000);
            var h2 = new Hand("Second Hand", 50000);
            var h3 = new Hand("Third Hand", 50000);
        }
    else {
        start();
    }
    }
};

start();

console.log(h1.name)
4

2 に答える 2

3

関数の外側のコードから見えるようにh1、関数の外側で宣言する必要があります。startstart

var h1, h2, h3;

function start() {
    var nHands=parseInt(prompt("How many hands do you want to play?(1,2 or 3)"));
    ...
    if (nHands === 1) {
        h1 = new Hand("First Hand", 150000);
    ...

ノート:

  1. これは Python ではないため、この条件は意図したとおりに機能しない可能性があります

    if (0 < nHands < 4 ) {
    

    あなたが必要とするものは

    if (nHands < 4 && nHands > 0) {
    
  2. 2回宣言していますがnHands、これは必要ありません。入力データを次のように数値に変換できます

    var nHands=parseInt(prompt("How many hands do you want to play?(1,2 or 3)"));
    
  3. elseif-else はしごに条件を含めることは常に良いことです。

于 2013-12-23T03:42:37.183 に答える
1

ハンドオブジェクトをハッシュに詰め込むこともできます。警告: これにより、期待どおりに「h1、h2、h3」にアクセスできるようになります。ポスター「thefourtheye」は、おそらくどこに行きたいかについて、堅牢で明確なアイデアを与えてくれました。

    function Hand(name, sChips) {
    this.name = name;
    this.sChips = sChips;
}
var h = {}; //global h obj
function start() {
var nHands = prompt("How many hands do you want to play?(1,2, or 3)");
var nHands = Number(nHands);
    if (0 < nHands < 4 ) {
        if (nHands === 1) {
            h.h1 = new Hand("First Hand", 150000);
        }
        else if (nHands === 2) {
            h.h1 = new Hand("First Hand", 75000);
            h.h2 = new Hand("Second Hand", 75000);
        }
        else if (nHands === 3) {
            h.h1 = new Hand("First Hand", 50000);
            h.h2 = new Hand("Second Hand", 50000);
            h.h3 = new Hand("Third Hand", 50000);
        }
    else {
        start();
    }
    }

};

    start();
    console.log(h.h2.name, h['h2'].name)
于 2013-12-23T03:54:41.477 に答える