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



我有一个简单的函数,我希望它只执行一次。因此,我创建了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>

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

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

相关内容

  • 没有找到相关文章

最新更新