javascript - 将参数传递给嵌套函数

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

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

最佳答案

不,如果您想使用发送到 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 参数,那么 that 就是那些函数中将引用的内容。您将有效地隐藏外部函数中的参数。

关于javascript - 将参数传递给嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016482/

相关文章:

javascript - 如何获取多选项下拉列表的值?

javascript - Angular2 中多个用户面板的最佳实践是什么

javascript - 在 IE10 中保持占位符的焦点

javascript - 正则表达式(或任何其他方法)用于查找用户在文本区域中输入的文本中换行符的数量

javascript - 函数未定义 - 不明白为什么

javascript - 通过单击另一个元素将类切换到一个元素

javascript - Javascript 中按其他数组的值对数组进行排序?

javascript - 截取 React 应用程序的屏幕截图并将其生成为 PDF

javascript - 调用空数组的 `every` 和 `some` 方法会返回奇怪的结果

javascript - 需要测试复合 React 组件是否调用处理程序 prop