天天看點

javascript 全局變量是可怕的?

一、全局變量是java最糟糕的特征之一:

  1、在浏覽器打開的一個網頁裡面,全局變量主要導緻下面的問題:

1) 變量名沖突- 如果你工作在一個團隊裡面,你和同僚使用全局作用域下的同一個變量名字,最後修改的變量的值,将被儲存,這明顯導緻有一個人将得不到自己定義的值,程式也就出錯了。

2) 安全性-每一個使用者都可以使用全局對象 Window (or global). 并增加一個變量到全局對象裡面,所有的使用者有權改我剛增加的變量,本來私人的東西,别人怎麼能看呢!

3) 速度慢-對給定一個變量,首先在currnt context 裡面找,沒找到再去父context裡找,最後才是全局裡面找。如果有繼承,哪麼速度會更慢。

4)增加存貯容量: 想想一個浏覽器頁面沒有關閉,哪麼全局變量一直儲存着,浪費空間,電腦 速度也會變慢。

5)使用也不靈活

   是以能不用就不用

 2、減少使用全局變量的兩種方式:

    第一:全局變量隻有一個,

              var myapp={};

       該全局變量是你的應用容器,在下面建立所有對象,函數等等: 

myapp.stooge = {

     "first-name": "Joe",

     "last-name": "Howard"

};

myapp.flight = {

   airline: "Oceanic",

   number: 815,

   departure: {

     IATA: "SYD",

     time: "2004-09-22 14:55",

     city: "Sydney"

    },

arrival: {

     IATA: "LAX",

     time: "2004-09-23 10:42",

     city: "Los Angeles"

 }

};

   你的所有資源在myapp名稱空間之下,你的程式與其它應用程式,元件或類庫之間的沖突減小。

     第二:閉包      

二、無塊級作用域

   最好在每個函數開頭部分聲明所有變量,既然放哪裡一樣,哪放在前面更好,有利于掌握一個函數用到的變量常量數。

三、{ 在return 下面 ,   undefined

1、

var  TestBlock=function()

 {

    var test1=function(){

          var i=0;

          return

       {

    status:2

  }; 

        };  

    var re=test1();

alert(re.status);

 };

   TestBlock();

結果:re      undefined

 //{ 和 return 一行,傳回對象

  return{

        status:2

  }; 

結果:彈出框 2

四、typeof     判斷資料類型

  typeof null  

  傳回 object,而不是null ,【檢測空用:my==null;

 一個更大的問題是檢測是一個對象或空

  if (my_value && typeof my_value === 'object') {

    // my_value is an object or an array!

  上面:傳回包括status成員的對象。