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