function fn_1() {
var c = "3";
alert(c); // 3
var c = "ttc"; //在这里给了实例 c 上面还是可以获取到值
var call_back = function(a) {
alert(a);
alert(c); //undefined
var c = "ttc"; // //在这里给了实例 c 上面就获取不到值了是为什么呢
}
fn_2(call_back);
}
function fn_2(call_back) {
var a = "ttc";
call_back(a);
}
var c = "3";
alert(c); // 3
var c = "ttc"; //在这里给了实例 c 上面还是可以获取到值
var call_back = function(a) {
alert(a);
alert(c); //undefined
var c = "ttc"; // //在这里给了实例 c 上面就获取不到值了是为什么呢
}
fn_2(call_back);
}
function fn_2(call_back) {
var a = "ttc";
call_back(a);
}
你在函数里任意位置定义的变量都可以在该函数的任意位置访问
所以你在callback定义a时就已经覆盖掉了外面的a 只是你alert时还没给a赋值 所以是undefined
function fn_1() {
var c = "3";
alert(c); // 3
var c = "ttc"; //在这里给了实例 c 上面还是可以获取到值
var call_back = function(a) {
alert(a);
alert(c); //这一行在执行时会现在函数内部找有没有变量c(如果有则弹出这个c,没有就在外部函数fn_1中找到,同理找到就弹出c,找不到则继续向外层也就是全局找c...),很显然函数内是有c的,但是c是在该行之后被赋值的,所以弹出时会弹出js声明一个变量时变量默认得到的值“undefined”。
var c = "ttc"; // <span style="color: #FF0000;">//在这里给了实例 c 上面就获取不到值了是为什么呢</span>
}
fn_2(call_back);
}
function fn_2(call_back) {
var a = "ttc";
call_back(a);
}