每个函数调用都没有重置此变量到底是什么?

时间:2017-09-17 01:23:36

标签: javascript

我创建了一个简单的模块模式函数,它返回一个方法对象,在这种情况下,只有一个方法添加一个创建一个具有唯一ID的div,然后将其添加到特定的section元素。 id是从名为cardId的函数中的私有变量创建的。我不理解变量在每个函数调用时是如何重置为1的,而是从函数返回的每个div都有一个唯一的id,这意味着有一个变量与另一个名为cardId的变量相关联。有人可以对此有所了解,还是指出了一些可以做到的事情?

let cardTools= function (){
     let cardId=1;

    return {
      addCard: function(){
         let card=document.createElement("div");
         let sec=document.getElementsByClassName("memory-cards")[0];//gets a section

         card.classList.add("card");
         card.id="i";
         card.id+=cardId;
         cardId+=1;

         sec.appendChild(card);

         return card;
         }
     }
}

let tools= cardTools();

let card=tools.addCard(); //id==i1
let card2=tools.addCard(); //id==i2
let card3=tools.addCard(); //id==i3

1 个答案:

答案 0 :(得分:0)

首先,我问你一个问题。你确定这段代码有效吗?

我必须执行以下操作才能使其正常工作。

let card1 = cardTools().addCard();
console.log(card1.id);

当我这样做时,我能够在每次通话时看到i1。您在此处发布的代码段给出了语法错误。

更新: 抱歉,我没有正确阅读您的代码。我很确定您的代码正常运行。但是,当我这样做时,每个案例都得到i1