var a = 10;
function aaa(){
alert(a);
var a = 20;
}
aaa();
================================================
var a = 10;
function aaa(){
alert(a);
a = 20;
}
aaa();
今天在某群问了一下这个问题,答案是千奇百怪的。各种理解都有,这个不是js的基础么?求大牛详细讲解一下?
扫码关注w3ctech微信公众号
补充一下,是10种思路!不是10种答案。。。。。。。
肯定是undefined啊,这是关于js作用域链的知识,js中寻找变量总是在作用域链上寻找,aaa()函数中已经声明了变量a(虽然是在alert()之后定义的,但是js的变量都是提前声明的,无论方法中有多少变量,全部在方法一开始就声明了)所以alert(a)执行之前a已经声明,即就是a存在,所以不会再向作用域链上层寻找,此时的a就是undefied,解答完毕,。
错
undefined . 解释:var a = 10; aaa()时a为局部变量,js提前声明,但是不带定义,故alert(a)时是undefined
楼上的思路,很奇特!这是给自己挖坑啊!
var a = 10;
function aaa(){
var a;
alert(a);
a = 20;
}
aaa();
相当于这样,所以。。。
谢谢 月影大大 刚发现贴错了
第一题会得到局部变量的值(javascript hoisting)规则,第一题会得到在函数执行前的全局变量值。
其实这里只有二个概念 一个是变量(函数)提升,一个是作用域 ps:alert()先寻找 var 定义的变量
共收到9条回复