2013-03-11 197 views
-3

請問瀏覽器上執行,從來沒有被調用JavaScript函數?JavaScript函數執行

做這些功能做任何傷害除了增加文件的大小?

function test() { 

    // 1000 lines of code (not commented out) 

} 
+6

什麼是_dead code_ ??你是在談論註釋掉的代碼或是** NOT **被調用的代碼?無論答案如何,你爲什麼要保持?根據[維基百科的定義(http://en.wikipedia.org/wiki/Dead_code),死代碼是** ** DEFINITELY執行。這是你死的代碼是什麼意思? – jahroy 2013-03-11 20:20:35

+2

這取決於瀏覽器。 Chrome爲JavaScript提供了一個非常好的JIT,並且可能會進行一些優化,比如跳過編譯代碼寫入的死代碼。但是,您的用戶仍然需要下載所有的代碼,不管它是否在事後執行。 – 2013-03-11 20:23:27

+0

您應該編輯您的問題以定義_dead code_的含義。根據[維基百科的定義(http://en.wikipedia.org/wiki/Dead_code)_dead code_肯定是執行,它肯定有負面的副作用......但我不是你什麼感覺談論。 – jahroy 2013-03-11 20:30:06

回答

2

只要test()永遠不會被調用,代碼永遠不會執行。它可能會被編譯。

1

它可能解析代碼,但像任何其他的功能,它不會,除非調用執行:

test(); // or any of the many other ways to call a function in JavaScript 

無論瀏覽器解析它很可能是依賴於實現的。

+0

_「它可能」_取決於? – gdoron 2013-03-11 20:22:06

+0

@gdoron上下文。例如,如果此函數位於另一個未曾到達的代碼塊中,則它可能永遠不會被解析。 – 2013-03-11 20:23:08

+0

@MattBall它會一直被解析。我想你的意思是編譯。 – zeroflagL 2013-03-11 21:05:03

0

瀏覽器將不執行任何代碼,除非它無論是在代碼或動態腳本的運行過程中明確提到。

function func() 
{ 
    alert('hello'); 
} 

window.addEventListener('load',func,false); 
// With this line it will be called on load.