頁面中多個script塊之間的關系


 一:函數聲明與函數定義表達式在函數調用間的區別

<script type="text/javascript"> doA(); var doA = function(argument) { console.log('執行了') } </script>

結果:

<script type="text/javascript"> doA(); function doA(argument) { console.log('執行了') } </script>  

結果:執行了

結論:函數聲明在編譯期處理了函數聲明,但是函數定義表達式並沒有初始化與賦值。類似聲明了一個變量,但是變量沒有賦值。

 

二:多個script之間對於變量的關系

JS是按照代碼塊來進行編譯和執行的,代碼塊間相互獨立,但變量和方法共享。

<script type="text/javascript">  
    function doA(argument) { console.log('執行了') } </script>  
<script type="text/javascript"> doA(); </script>

結果:執行了

**如果兩個函數塊之間更換位置,那就會報錯。

 

<script type="text/javascript">  
   var a = 0; </script>  
<script type="text/javascript"> console.log(a); </script>

結果:0

**如果兩個函數塊之間更換位置,那就會報錯。

 

三:這樣就造成了一個問題,當我們一個頁面中引入多個js的時候,可能會造成全局變量的污染

我們可以這么做來避免:

<script type="text/javascript">  
   var a = 0; </script>  
<script type="text/javascript"> ;(function(){ var a = 1; console.log(a); })(); console.log(a); </script>
結果:1
          0
 
或者我們直接用函數來做:
<script type="text/javascript">  
function bigDoA(argument) { var a = 0; //其他代碼
} </script>  
<script type="text/javascript">
function bigDoB(argument) { var a = 0; //其他代碼
} </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 頁面中多個script塊之間方法與變量共享問題 面向對象中多個對象之間的關系 頁面中