在「變數範圍-在「Function」上用「var」來宣告變數的差異(一)」一文中,我們曾提及在「Function」加上「var」宣告,才是明確的定義此變數為「區域變數」,否則便是「實體(時間軸)變數」,倘若我們少打了「var」來宣告的話,那會造成多大的影響呢?這裡我們就來比較一下兩者間的執行速度。
存取「區域變數」遠比「實體(時間軸)變數」快
區域變數
function test() { var i = 10; for(var j = 0 ; j < 100000; j++) { i+=j; } } var start = getTimer(); test(); trace(getTimer()-start);
結果:(取決於電腦速度而有所不一)
114
實體(時間軸)變數
function test() { i = 10; for(var j = 0 ; j < 100000; j++) { i+=j; } } var start = getTimer(); test(); trace(getTimer()-start);
結果:(取決於電腦速度而有所不一)
233
從結果來看,由於區域變數會使用到Flash Player內部所提供的暫存器來儲存之,造成兩者在上述的範例測試中,執行速度差距有二倍之多(114ms vs. 233ms),所以不可不慎!~