对“js变量作用域的疑问”的解答
生活随笔
收集整理的這篇文章主要介紹了
对“js变量作用域的疑问”的解答
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文如下:
今天看到了FLASH AS關于變量作用域的講解,突然想到一個js作用域的問題。
如下代碼,猜猜執行后都彈出什么?
??<script?type="text/javascript">
??<!--
??var?a="xx";
??function?c(){
????alert(a);
????var?a=0;
????alert(a);
??}
??c();
??alert(a)
??//-->
??</script>
執行上面代碼分別彈出了:undefined、0和xx。
可能很多朋友都跟我一樣吧,對于那個undefined不知道是怎么來的?
js作用域有些地方真是不好理解,希望高人指點! 其實,這個很好理解,就跟 一般的編程語言一樣,都有全局變量,局部變量,當局部變量與全局變量同名時,會將全局變量覆蓋。js也是如此,不同的是,js是解釋型語言,而且有函數的作用域。當執行c()時,會先檢查局部變量的定義。如果有則覆蓋。然后再解釋執行。執行alert(a) 時,因為全局變量已被覆蓋。且沒有遇到var a=0;所以是undefined。
今天看到了FLASH AS關于變量作用域的講解,突然想到一個js作用域的問題。
如下代碼,猜猜執行后都彈出什么?
??<script?type="text/javascript">
??<!--
??var?a="xx";
??function?c(){
????alert(a);
????var?a=0;
????alert(a);
??}
??c();
??alert(a)
??//-->
??</script>
執行上面代碼分別彈出了:undefined、0和xx。
可能很多朋友都跟我一樣吧,對于那個undefined不知道是怎么來的?
js作用域有些地方真是不好理解,希望高人指點! 其實,這個很好理解,就跟 一般的編程語言一樣,都有全局變量,局部變量,當局部變量與全局變量同名時,會將全局變量覆蓋。js也是如此,不同的是,js是解釋型語言,而且有函數的作用域。當執行c()時,會先檢查局部變量的定義。如果有則覆蓋。然后再解釋執行。執行alert(a) 時,因為全局變量已被覆蓋。且沒有遇到var a=0;所以是undefined。
總結
以上是生活随笔為你收集整理的对“js变量作用域的疑问”的解答的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞鸽传书2013年开发计划
- 下一篇: qq音乐2012绿色版