js的作用域的一个问题?

vcxiaohan 发布于 2017/02/06 10:09
阅读 292
收藏 1

setTimeout(function(){
    var a = null;
    try {
        console.log(a, 1)
        a=123;
        console.log(a, 2)
    }catch(e) {}
    console.log(a, 3)
    ding();
}, 1000);

function ding(){
    console.log(a, 4)// 这个地方的a为什么是undefined
}

加载中
1
佛心看世界
佛心看世界
var a = null
setTimeout(function(){
    try {
        console.log(a, 1)
        a=123;
        console.log(a, 2)
    }catch(e) {}
    console.log(a, 3)
    ding();
}, 1000);

function ding(){
    console.log(a, 4)// 这个地方的a为什么是undefined
}


//或者

setTimeout(function(){
    
    var a = null
    try {
        console.log(a, 1)
        a=123;
        console.log(a, 2)
    }catch(e) {}
    console.log(a, 3)
    ding(a);
}, 1000);

function ding(a){
    console.log(a, 4)// 这个地方的a为什么是undefined
}

//或者

setTimeout(function(){
    
    var a = null;
    var ding = function(){
       console.log(a, 4)// 这个地方的a为什么是undefined
    }
    try {
        console.log(a, 1)
        a=123;
        console.log(a, 2)
    }catch(e) {}
    console.log(a, 3)
    ding();
}, 1000);

 

1
丶生似夏花

你把A 放在 setTimeout 放在外面,就OK 了

1
guo11235
guo11235

a是局部变量,setTimeout()里面传入的匿名函数,a是匿名函数的局部变量

0
mark35
mark35

变量作用域是编写时定义的,而不是运行时定义的。

在编写ding()函数时无法找到a这个变量

返回顶部
顶部