window.onload =function(){
var a =1;
var oBtn = document.getElementById('btn');
oBtn.onclick = function(){
foo();
}
}
function foo(){
console.log(a) //Uncaught ReferenceError: a is not defined
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
js中的作用域是静态作用域,而不是静态作用域。也就是说函数执行时访问的作用域是定义时的作用域,而不是调用时的作用域。
a变量在onload里面,foo函数里没有a变量,所以你在onclick的时候foo函数里没有a变量。
this.a
变量a的作用域只存在于onload里,所以咯。
var a =1; 改写成 a =1; 去掉var的话,a就是全局变量了,其它函数里也可以调用到。
或者把 var a =1; 写到 onload函数的上面。
var a =1;
window.onload =function(){
function foo(){
console.log(a) //Uncaught ReferenceError: a is not defined
}