2012-11-25 89 views

回答

9

!運算符表現正常,否定表達式。在這種情況下,它用於強制函數成爲函數表達式而不是函數語句。由於!運算符必須應用於表達式(將它應用於語句是沒有意義的,因爲語句沒有值),函數將被解釋爲表達式。

這種方式可以立即執行。

function(){ 
    alert("foo"); 
}(); // error since this function is a statement, 
    // it doesn't return a function to execute 

!function(){ 
    alert("foo"); 
}(); // This works, because we are executing the result of the expression 
// We then negate the result. It is equivalent to: 

!(function(){ 
    alert("foo"); 
}()); 

// A more popular way to achieve the same result is: 
(function(){ 
    alert("foo"); 
})(); 
+0

如果函數返回'true',它會將其更改爲'false'嗎? –

+1

@Derek是的,從函數返回的任何真值將被否定爲false,反之亦然。但是,在代碼中,OP引用的返回值沒有被使用,所以'!'的目的只是爲了讓函數立即被調用。 – Paulpro

+0

如果返回的值很重要,那麼'!! function(){}'更好? –

相關問題