JS的种种坑01——变量提拔

Code01:

<script>
var a = 10;
function fn(){
    a = 100;//底下的var a提拔声明,所以这里的a是局部变量a
    console.log(a);
    console.log(this.a);//fn()在全局作用域中实行,所以this指向全局。
    var a;
    console.log(a);//局部变量a
}
fn();
</script>

效果:100,10,100

Code02:

<script>
var a=10;
function fn(){
    console.log(a);//底下的var a=100;会提拔声明,但不会赋值,所以是undefined
    console.log(this.a);//全局变量a
    var a = 100;
    console.log(a);//局部变量a
}
fn();
</script>
效果:undefined,10,100

Code03:

<script>
var a=10;
function fn(){
    console.log(a);//-->全局遍历a
    console.log(this.a);//-->全局遍历a
    a = 100;
}
fn();
console.log(a);//-->全局遍历a
</script>

效果:10,10,100

    原文作者:Asrocky
    原文地址: https://segmentfault.com/a/1190000004030426
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞