js 作用域
程序员文章站
2023-11-11 12:28:52
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); }
运行结果: