将参数传递给嵌套函数

时间:2011-08-10 19:19:57

标签: javascript

这是我的代码:

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; 
    };
};

这是将参数传递给嵌套函数的正确方法吗? idid2中的this.deal()this.hit()来自Placemat()

2 个答案:

答案 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()的参数,您可以通过idid2参数执行此操作。

但是如果这些嵌套函数定义了自己的idid2参数,则 将在这些函数中引用。您将在外部函数中有效阴影参数。

答案 1 :(得分:1)

没有。事实上,你首先传递的是什么?你不要在函数中使用它们。

你正在这样做,你正在创建两个函数(hitdeal),每个函数都需要一个参数。这些参数恰好与您的外部函数的参数命名相同。