JavaScript作用域之没有块级作用域
JavaScript作用域之没有块级作用域
与C、C++以及JAVA不同,Javscript没有块级作用域。函数中声明的所有变量,无论是在哪里声明的,在整个函数中它们都是有定义的。
上例子
例子一、下面代码中,变量i、j和k和作用域是相同的,它们三个在整个函数中都有定义。
<script> function test(o){ var i=0; if(typeof o == "object"){ var j=0; for(var k=0; k<10; k++){ document.writeln("k="+k); } document.writeln("k2="+k); } document.writeln("j="+j); } test(new String("pppp")); </script>
输出结果为:k=0k=1k=2k=3k=4k=5k=6k=7k=8k=9+++k=10j=0
这一规则可以产生惊人的结果,上代码
<script> var scope="global"; function f(){ alert(scope); var scope="local"; alert(scope); } f(); </script>
结果:第一个alert输出:underfined而不是global,第二个alert输出local
上面函数f与下面的函数等价:
function f(){ var scope; alert(scope); var scope="local"; alert(scope); }
如果你写成:
<script> var scope="global"; function f(){ alert(scope); var scope2="local"; alert(scope2); } f(); </script>
输出结果为:第一个alert为global,第二个为:local.
相关推荐
leowzl 2020-08-15
明天你好 2020-08-03
idning 2020-08-03
liusarazhang 2020-06-28
chenlxhf 2020-06-25
Jonderwu 2020-06-14
shikailonggy 2020-06-05
shangs00 2020-05-09
wanff0 2020-05-04
ChinaGuanq 2020-05-01
whbing 2020-04-21
hyxinyu 2020-04-18
sunlizhen 2020-04-17
amberom 2020-03-28
zgwyfz 2020-03-28
XCMercy 2020-03-26
ThinkingLink 2020-02-29
Livis的开发之路 2020-02-28