开发者社区 问答 正文

js 作用域问题?

window.onload=function(){
var inp= document.getElementById("inp");
var value= inp.value;
addEventHandler(bt1, "click",function(){

checkNum();
//var value= inp.value;
queue.leftPush(value); //queue是一个对象

});
}
为什么'value' 在addEventHandler里不能访问到外面的value?

展开
收起
a123456678 2016-03-11 18:14:43 1784 分享 版权
1 条回答
写回答
取消 提交回答
  • window.onload=function(){
    var inp= document.getElementById("inp");
    var value= inp.value;//[A]
    addEventHandler(bt1, "click",function(){

    checkNum();
    //var value= inp.value;
    queue.leftPush(value); //queue是一个对象

    });
    }
    [A]处获取的值是一个字符串,是一个原始值

    var value= inp.value;
    把inp的value属性值复制给了value变量,它们之间不会有关系,即使inp的value属性值发生了变化,value变量的值是不会变的
    你可以修改成

    window.onload=function(){
    var inp= document.getElementById("inp");
    addEventHandler(bt1, "click",function(){

    checkNum();
    var value= inp.value;
    queue.leftPush(value); //queue是一个对象

    });
    }
    通过闭包,click事件的回调函数绑定inp对象,不过这样这样你的回调函数对外部函数内的变量有依赖了~~,还是直接在回调中处理好些

    window.onload=function(){

    addEventHandler(bt1, "click",function(){

    var inp,value;
    checkNum();
    inp=document.getElementById("inp");    
    value= inp.value;
    queue.leftPush(value); //queue是一个对象

    });
    }

    2019-07-17 18:59:48
    赞同 展开评论
问答分类:
问答标签:
问答地址: