Come maianonima javascript funzione di chiamata! Funzione vs funzione
function(){ alert("test123");}()
produce SyntaxError: Unexpected token (
mentre
!function(){ alert("test123");}()
avvisi "Test123"
?
Come maianonima javascript funzione di chiamata! Funzione vs funzione
function(){ alert("test123");}()
produce SyntaxError: Unexpected token (
mentre
!function(){ alert("test123");}()
avvisi "Test123"
?
È perché aggiungendo il segno !
si converte la dichiarazione in un'espressione e la si invoca immediatamente. Con allegando la funzione tra parentesi si farà primo esempio di lavoro senza errori:
(function(){ alert("test123");})()
per renderlo più chiaro si può pensare prima espressione come qualcosa di simile:
if (false || !function(){ return false; }())
too bad Non riesco a scrivere una risposta corretta, ma ... "identificatore" non è il termine corretto. Piuttosto, la distinzione è tra una definizione e un'espressione. Il primo non può essere invocato immediatamente. –
Giusta traccia ma spiegazione errata. Il ! converte la dichiarazione in un'espressione. – slebetman
Posso definire una funzione e _non_ invocarla: '! Function() {alert (" non verrà chiamato ")}' –
http://benalman.com/news/2010/11/immediately-invoked-function-expression/ – zerkms
@zerkms Probabilmente dovresti postarlo come una risposta, poiché in realtà spiega abbastanza bene il nocciolo della questione. – Kippie
c'mon, c'è _has_ per essere un duplicato ... –