全域性變數的三種宣告方法
全域性變數有如下三種宣告方法(這裡以舉宣告FWK這個變數為例):
1、使用var直接宣告 var FWK;
2、使用window.FWK = ….;
3、隱式宣告全域性變數(定義FWK前不加var) FWK
它們的區別在哪裡呢?更提倡何種寫法?
使用var 定義的變數,將被提前預解析,如下的程式碼:
<script type="text/javascript"> alert(FWK); FWK = 'ddd'; </script>
<script type="text/javascript"> alert(FWK); window.FWK = 'ddd'; </script>
<script type="text/javascript"> alert(FWK); var FWK = 'ddd'; </script>
其它的二種宣告方法,將會被告知FWK未定義(FWK is not defined)
看看這三種宣告的方式,是否能被for in出來:
<script type="text/javascript"> window.FWK = 'ddd'; for (var i in window) { if (i === 'FWK') { alert(i + '---' + window[i]); } } </script>
<script type="text/javascript"> FWK = 'ddd'; for (var i in window) { if (i === 'FWK') { alert(i + '---' + window[i]); } } </script>
<script type="text/javascript"> var FWK = 'ddd'; for (var i in window) { if (i === 'FWK') { alert(i + '---' + window[i]); } } </script>
除了window.FWK的方式能被for in 出來,其它二種均不行。
再看看它們是否能被delete:
<script type="text/javascript"> var FWK = 'ddd'; alert( delete FWK ); alert(FWK); </script>
顯示false ddd,說明var 宣告的變數無法使用delete
<script type="text/javascript"> FWK = 'ddd'; alert( delete FWK ); alert(FWK); </script>
顯示true FWK未定義,說明隱式宣告的全域性變數可以被delete,與global物件的parseInt、escape、parseFloat等等類似,可直接被delete。
<script type="text/javascript"> alert(parseInt); alert(delete parseInt); alert(parseInt); </script>
<script type="text/javascript"> window.FWK = 'ddd'; alert( delete FWK ); alert(FWK); </script>
全域性變數的三種宣告方法
全域性變數有如下三種宣告方法(這裡以舉宣告FWK這個變數為例):
1、使用var直接宣告 var FWK;
2、使用window.FWK = ….;
3、隱式宣告全域性變數(定義FWK前不加var) FWK
它們的區別在哪裡呢?更提倡何種寫法?
使用var 定義的變數,將被提前預解析,如下的程式碼:
<script type="text/javascript"> alert(FWK); FWK = 'ddd'; </script>
<script type="text/javascript"> alert(FWK); window.FWK = 'ddd'; </script>
<script type="text/javascript"> alert(FWK); var FWK = 'ddd'; </script>
其它的二種宣告方法,將會被告知FWK未定義(FWK is not defined)
看看這三種宣告的方式,是否能被for in出來:
<script type="text/javascript"> window.FWK = 'ddd'; for (var i in window) { if (i === 'FWK') { alert(i + '---' + window[i]); } } </script>
<script type="text/javascript"> FWK = 'ddd'; for (var i in window) { if (i === 'FWK') { alert(i + '---' + window[i]); } } </script>
<script type="text/javascript"> var FWK = 'ddd'; for (var i in window) { if (i === 'FWK') { alert(i + '---' + window[i]); } } </script>
除了window.FWK的方式能被for in 出來,其它二種均不行。
再看看它們是否能被delete:
<script type="text/javascript"> var FWK = 'ddd'; alert( delete FWK ); alert(FWK); </script>
顯示false ddd,說明var 宣告的變數無法使用delete
<script type="text/javascript"> FWK = 'ddd'; alert( delete FWK ); alert(FWK); </script>
顯示true FWK未定義,說明隱式宣告的全域性變數可以被delete,與global物件的parseInt、escape、parseFloat等等類似,可直接被delete。
<script type="text/javascript"> alert(parseInt); alert(delete parseInt); alert(parseInt); </script>
<script type="text/javascript"> window.FWK = 'ddd'; alert( delete FWK ); alert(FWK); </script>