2011-08-10 99 views
2

這是我的代碼:參數傳遞到嵌套函數

var Placemat = function(id,id2) { 
    this.hand = document.getElementById(id); 
    this.bucket = ""; 
    this.bucketspace = document.getElementById(id2); 
    this.bucketvalue = 0; 
    var that = this; 
    this.deal = function(id) { 
     shuffle(); 
     var card1 = deck.shift(); 
     var card2 = deck.shift(); 
     this.hand.innerHTML = card1 + ", " + card2; 
    }; 
    this.hit = function(id2) { 
     var card3 = deck.shift(); 
     this.bucket = this.bucket + deck.shift(); 
     this.bucketspace.innerHTML = this.bucket; 
    }; 
}; 

這是傳遞參數給一個嵌套函數的正確方法?這idid2this.deal()this.hit()是從Placemat()

+0

我不明白參數是什麼? – zwol

回答

2

不,如果要使用發送到Placemat()的值,則需要在deal()hit()函數中引用它們。不要將它們列爲這些功能的參數。

// removed---------v 
this.deal = function() { 
    alert(id); // <---- do something with the original argument 
    shuffle(); 
    var card1 = deck.shift(); 
    var card2 = deck.shift(); 
    this.hand.innerHTML = card1 + ", " + card2; 
}; 

// removed--------v 
this.hit = function() { 
    alert(id2); // <---- do something with the original argument 
    var card3 = deck.shift(); 
    this.bucket = this.bucket + deck.shift(); 
    this.bucketspace.innerHTML = this.bucket; 
}; 

記住,參數僅僅是任何可以被傳遞給函數的標識符。 參數是實際通過的。

通過您定義的參數可以參考參數。所以要讓你的函數引用發送到Placemat()的參數,你可以通過參數idid2來完成。

但是,如果這些嵌套函數定義自己的idid2參數,然後就是將這些功能引用。您將有效地遮蔽外部函數中的參數。

1

不,實際上,你通過身份證的第一個地方是什麼?你不在功能中使用它們。

你這樣做的方式是創建兩個函數(hitdeal),每個函數都需要一個參數。這些參數恰好與外部函數的參數命名相同。