參與iT邦JavaScript中忍比賽,獲得一本JS武林祕級“JavaScript設計模式”,因而閉門修練月餘,今神功既成故節錄三十片段,以饗邦友。
隱含的全域變數和明確定義的全域變數之間的差別是能否用“delete”將變數刪除。
規則如下:
(1)用var創造出的全域變數不可以刪除
(2)不使用var隱含創造出的全域變數可以刪除
這個意思是:
隱含的全域變數在技術上來說,並不是真的變數,而是全域物作的“屬性”。
屬性可用“delete”來刪除,但真的變數不行。
讓我們看一下範例會比較清楚。
//定義三個全域變數
var global_var = 1;
global_novar = 2;
//立即函數,亦即只運行一次
(function(){
global_fromfunc = 3;
}());
//試著刪除
delete global_var;
delete global_novar;
delete global_fromfunc;
//刪除之後
console.log(typeof(global_var)); //number
console.log(typeof(global_novar)); //undefined
console.log(typeof(global_fromfunc)); //undefined
由以上可知「var」千萬不可以“不小心”就漏了哦~~~
待續.....
var 泰大="TOO BIG"
泰大="too too big"
console.log(typeof(泰大));.....??
<pre class="c" name="code">
var t = "Ted";
t = "CDFU";
console.log(typeof(t)); // string
console.log(t); // CDFU
delete (t);
console.log(typeof(t)); // string
console.log(t); // CDFU
delete之後變數t與值仍存在是因為 t 為經 「var」宣告的,就算消也消不掉。