首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -在将函数作为参数传递后,更改函数内部的外部变量

Javascript -在将函数作为参数传递后,更改函数内部的外部变量
EN

Stack Overflow用户
提问于 2020-09-08 00:24:28
回答 1查看 92关注 0票数 1

我有一个简单的函数,我希望它只执行一次。因此,我创建了status.example_1status.example_2。当函数执行时,状态应该从false更改为true,但它不起作用。它作为参数e2传递给myFunction,这就是问题的原因。

有没有办法让它工作呢?这里我漏掉了什么?

代码语言:javascript
复制
(function(){
    
    var btn1 = document.getElementById('btn-1'),
        btn2 = document.getElementById('btn-2'),
        status = {
            example_1:  false,
            example_2:  false,
        };
      
    function myFunction(e1,e2){
        if(e2 === false){
            console.log('Button: ' + e1);
            e2 = true;
        }
    }
    
    btn1.addEventListener('click',function(){
        myFunction(1,status.example_1);
    });
    
    btn2.addEventListener('click',function(){
        myFunction(2,status.example_2);
    });
    
})();
代码语言:javascript
复制
<button id="btn-1">Click-1</button>
<button id="btn-2">Click-2</button>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-08 00:43:10

你的函数应该接收整个对象才能修改它,因为你只传递了一个属性,它就像一个新的变量,而不是:

代码语言:javascript
复制
function myFunction(e1,e2){
    if(e2 === false){
        console.log('Button: ' + e1);
        e2 = true;
    }
}

你可以试试

代码语言:javascript
复制
function myFunction(e1,status){
    if(status[`example_${e1}`] === false){
        console.log('Button: ' + e1);
        status[`example_${e1}`] = true;
    }
}

myFunction(2,status);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63781179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档