如何解决JavaScript-将参数作为参数传递后,在函数内部更改外部变量
我有一个简单的函数,我只希望执行一次。因此,我创建了status.example_1
和status.example_2
。执行该功能后,状态应从false
更改为true
,但是它不起作用。它作为参数myFunction
传递给e2
,这就是问题的原因。
有什么办法可以使它工作?我在这里想念什么?
(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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。