function parent(){
var pi = Math.PI;
child();
}
function child(){
console.log(pi);
}
parent();
javascript的作用域问题,可以看看 https://github.com/mqyqingfeng/Blog/issues/3
var a = 111111111; function test(){ var a = 1; sayA(); } function sayA(){ console.log(a); } test()
按你的理解输出 1, 其实是11111111
这是js变量作用域链的问题, 或者丢在glob作用域中 window.pi = Math.PI;
window
+-- parent
+-- pi
+-- child
child与parent同级, 但pi在parent里面.
就好像你能看到邻居的房门, 但永远不知道里面的装饰是怎样的,
除非他把钥匙给你 : child(pi)
或者把钥匙放在门边: window.parent = function(){}; window.pi=Math.PI;
pi变量未在child的函数作用域链中,应在child的函数中声明pi变量,或者将child函数丢到parent函数中,如:
function parent(){
var pi = Math.PI;
function child(){
alert(pi);
}
child();
}
parent();