用匿名函式將指令碼包起來;
使用多級命名空間。
這第二條「使用多級命名空間」這個,我覺得並不是很完美的好主意。因為如果級數太多的話會造成變數名字變得長的一逼。
沒有做過任何優化的滿目瘡痍的**。a.js 和 b.js 都有全域性變數window.a
,導致衝突,全域性變數屬於window
作用域下的。
通過匿名函式改變了a.js 和 b.js 中的變數 a 的作用域,使得他們都不再是全域性變數了,但是在 b.js 中無法訪問在 a.js 中的變數 a, 換而言之,他們之間沒辦法通訊了。
(function() )();
(function() )();
var str;
(function() )();
(function() )();
使用window.str
這種全域性全域性變數作為通訊的媒介其實並不是乙個好辦法,這樣做會導致全域性變數越來越多,反而不好維護。
var global = {};
(function() )();
(function() )();
使用單一的全域性變數 global ,匿名空間裡需要儲存的屬性都在全域性變數 global 的基礎上使用命名空間的方式進行拓展。這裡給命名空間起名字也需要很講究,好的命名規則會對團隊協同合作有很大的幫助。具體的命名方式待我賣個關子,以後再說。 線段樹什麼的最討厭了
description 小y 最近學習了線段樹,但是由於她的智商比較低,運用的還不是很熟練。於是小r 給了她一點練習題訓練,其中有一道是這樣的。這是小r 寫的線段樹的一段建樹 只要呼叫buildtree 1,0,n 就可以得到一顆線段樹了。顯然,一顆線段樹一共有o n 個節點,因為每乙個節點都代表了...
線段樹什麼的最討厭了
description 小y 最近學習了線段樹,但是由於她的智商比較低,運用的還不是很熟練。於是小r 給了她一點練習題訓練,其中有一道是這樣的。這是小r 寫的線段樹的一段建樹 只要呼叫buildtree 1,0,n 就可以得到一顆線段樹了。顯然,一顆線段樹一共有o n 個節點,因為每乙個節點都代表了...
IIFE為什麼不會汙染全域性變數
在開發過程中見到的iife,函式表示式都是匿名的,如果我們把它寫成命名函式表示式,那全域性作用域中豈不是多了乙個變數,這樣又怎麼能保證不會汙染全域性變數呢?通常我們在談論iife時,都是在談論它的用法,模組化,閉包等等,卻少有提及它為什麼可以拿來做模組化,為什麼不會汙染全域性變數。本文雖然是在說ii...