Aggiornamento 2018 : dovresti usare nessuno e preferire le funzioni freccia che hanno lessico this
scoping.
originale:
Sono entrambi idiomatici.
Un esperto programmatore JavaScript saprà esattamente cosa sta succedendo durante la lettura.
È solo una variabile che nomina il nome - non c'è alcun motivo empirico per scegliere l'uno sull'altro - funzionano esattamente allo stesso modo e sono entrambi comuni nelle basi di codice grande di comuni librerie open source.
Non c'è motivo di usarne uno sopra l'uno. L'importante è sceglierne uno e seguitelo e quando ti unisci a un nuovo codice base: segui ciò che stanno facendo.
Questa domanda correlata in StackOverflow rileva che self
potrebbe avere una limitazione davvero minima in cui si riferisce a window
in alcuni browser - così invece di ottenere un ReferenceError si otterrebbe un errore silenzioso. Tuttavia - questo non dovrebbe essere il caso, comunque, se usi un linter.