2015-02-23 23 views
3

我使用一些代碼來學習JavaScript的JavaScript OOP,它包含下面的代碼片段,我試圖瞭解:瞭解無效

void window.setTimeout(function() { 
    $(".item").css("opacity", 1) 
}, 400); 

我從來沒有用過的空操作,並從documentation ,無法理解爲什麼在這種情況下使用它?

+3

你從哪裏找到那個代碼片段?你完全正確,在這裏使用'void'是沒有用的。 – Bergi 2015-02-23 11:37:28

+2

它可能用於不返回setTimeout返回的數字,而不是返回該值,而不是它會在該示例中產生任何差異,但將其保存在函數中並在其前面添加「return」,它可能會。 – adeneo 2015-02-23 11:37:47

+1

@Bergi至少我在理解文檔:) – 2015-02-23 11:40:27

回答

4

正如您已經閱讀過的那樣,void運算符將評估其操作數,然後生成值undefined。當你撥打setTimeout時,它會返回一個數字(定時器句柄)。所以void setTimeout(...)結果在undefined而不是一個數字。

如果代碼確實如您所示,那麼void運算符沒有任何用處,因爲從setTimeout返回的值沒有用於任何事情。


[我已經刪除我寫的CoffeeScript位,因爲我無法創建一個例子; CoffeeScript編譯器抱怨void是一個保留字(它是,但這就是我使用它的原因)。我不做CoffeeScript,所以最好把它刪除。]

+0

我明白了。因此,如果它是返回一個值的函數的一部分,並且你不在setTimeout()的返回值之後,那麼這是一個有用的工具。謝謝Sir – 2015-02-23 11:46:20

+0

@SamHolguin:是的,雖然如果代碼真的是JavaScript,那就沒有必要;只是不要把'return'放在它的前面,而且這個值也不會被使用。 – 2015-02-23 11:47:03