5
我發現這個語法簡單,偉大,精彩,功能強大的庫knockoutjs:在function
聲明之前語法!function(){...}是什麼意思?
!function(factory) { ... }
什麼的不籤(!
)的含義?
更新:源代碼不再包含此確切的語法。
我發現這個語法簡單,偉大,精彩,功能強大的庫knockoutjs:在function
聲明之前語法!function(){...}是什麼意思?
!function(factory) { ... }
什麼的不籤(!
)的含義?
更新:源代碼不再包含此確切的語法。
!
運算符表現正常,否定表達式。在這種情況下,它用於強制函數成爲函數表達式而不是函數語句。由於!
運算符必須應用於表達式(將它應用於語句是沒有意義的,因爲語句沒有值),函數將被解釋爲表達式。
這種方式可以立即執行。
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");
})();
如果函數返回'true',它會將其更改爲'false'嗎? –
@Derek是的,從函數返回的任何真值將被否定爲false,反之亦然。但是,在代碼中,OP引用的返回值沒有被使用,所以'!'的目的只是爲了讓函數立即被調用。 – Paulpro
如果返回的值很重要,那麼'!! function(){}'更好? –