(1) ? ?var i=0;這個(gè)i如果在if 或者在for里相當(dāng)于什么還是局部變量?如果在函數(shù)test里在創(chuàng)建一個(gè)函數(shù)這個(gè)i是否可以調(diào)用?簡(jiǎn)單的說就是比如創(chuàng)建funcition text(0) 定義局部變量var i=0.只要在test函數(shù)中不管其中包含多少函數(shù),這個(gè)i都會(huì)有效是吧?在子函數(shù)里直接調(diào)用就可以是吧?那么第二個(gè)問題如果在test的子函數(shù)中聲明一個(gè)變量,這個(gè)變量是否依然可以在其他子函數(shù)中使用呢?<html>??
<head>??
<script?type="text/javascript">??
????function?test(o)?{??
????????var?i?=?0;??
????????if?(typeof?o?==?"object")?{??
????????????var?j?=?0;??
????????????for?(var?k?=?0;?k?<?10;?k++)???
????????????{??
????????????????document.write(k);??
????????????}??
????????????document.write(k);??//還可以訪問到k為10??
????????}??
????????document.write(j);?//還可以訪問到j(luò)為0??
????}??
????var?o?=?new?Object();??
????test(o);??
</script>??
</head>??
</html>(2) ? 為什么第一個(gè)alert(scope)顯示undefined,不是外面有全局函數(shù)了嗎?<html>??
<head>??
<script?type="text/javascript">??
???var?scope?=?"global";??
???function?f()?{??
???????alert(scope);??//顯示undefined??
???????var?scope?=?"local";??
???????alert(scope);??
???}??
???f();??
</script>??
</head>??
</html>(3)沒錯(cuò)我就是(2).我又來了JS有hoisting這個(gè)東西也就是變量聲明提升。var scope=local應(yīng)該擠到第一個(gè)位置來,那么就意味著先聲明后執(zhí)行。為什么在這里會(huì)無效呢?<html>??
<head>??
<script?type="text/javascript">??
???var?scope?=?"global";??
???function?f()?{??
???????alert(scope);??//顯示undefined??
???????var?scope?=?"local";??
???????alert(scope);??
???}??
???f();??
</script>??
</head>??
</html>
作用域的3個(gè)問題求解答困擾好久了
幻滅丶
2016-06-24 23:47:10