欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js 作用域

程序员文章站 2022-06-04 20:02:08
js的作用域和py相似,if while等控制语句并没有自己作用域;而函数是有自己的作用域的; 嵌套函数的作用域: for (var i=1; i ......

js的作用域和py相似,if while等控制语句并没有自己作用域;而函数是有自己的作用域的;

<body>
<script>
    if(1==true){
        var s = 8;
    }
    console.log(s);

    function f(){
        var s2 = 6;
    }
    console.log(s2);        // uncaught referenceerror: s2 is not defined
</script>
</body>

嵌套函数的作用域:

var city = 'guangzhou';
function func(){
    var city = 'foshan';
    function inner(){
        var city = 'huizhou';
        console.log(city);
    }
    inner();
}
func();

# 运行结果:
huizhou
var city = 'guangzhou';
function bar(){
    console.log(city);
}

function func(){
    var city = 'foshan';
    return bar;
}
var ret = func();
ret();

# 运行结果:
guangzhou

# 解释:var city = 'foshan'; 只在 func() 函数中生效,func() 函数返回了一个 bar 函数指针,在 bar() 函数中,city 在本地函数中找不到定义,向上一级寻找
for (var i=1; i<=9; i++){
    settimeout( function timer(){
        console.log(i);
    }, 1000);
}

运行结果:
js 作用域