这是我的代码:
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;
};
};
这是将参数传递给嵌套函数的正确方法吗? id
和id2
中的this.deal()
和this.hit()
来自Placemat()
。
答案 0 :(得分: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()
的参数,您可以通过id
和id2
参数执行此操作。
但是如果这些嵌套函数定义了自己的id
或id2
参数,则 将在这些函数中引用。您将在外部函数中有效阴影参数。
答案 1 :(得分:1)
没有。事实上,你首先传递的是什么?你不要在函数中使用它们。
你正在这样做,你正在创建两个函数(hit
和deal
),每个函数都需要一个参数。这些参数恰好与您的外部函数的参数命名相同。