一、全局變量是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成員的對象。