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

Javascript - change outside variable inside a function after passing it as an argument

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

有什么办法让它起作用吗?我在这里错过了什么?

(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);
    });
    
})();
<button id="btn-1">Click-1</button>
<button id="btn-2">Click-2</button>

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

function myFunction(e1,e2){
    if(e2 === false){
        console.log('Button: ' + e1);
        e2 = true;
    }
}

你可以试试

function myFunction(e1,status){
    if(status[`example_${e1}`] === false){
        console.log('Button: ' + e1);
        status[`example_${e1}`] = true;
    }
}

myFunction(2,status);