Perché è consentito?Utilizzo di function.prototype.bind direttamente sulla dichiarazione di funzione
var f = function() {
console.log(this.x);
}.bind({x:1})();
E perché questo non è o meglio perché ottengo errore di sintassi in questo caso?
function f() {
console.log(this.x);
}.bind({x:1})();
Allora, perché ho bisogno funzione espressione sintassi per ottenere questo lavoro e c'è un modo per utilizzare il metodo bind
direttamente sul dichiarazione di funzione?
Una dichiarazione di funzione non è un'espressione, quindi non è possibile farlo. Ma puoi forzare un'espressione '! Function f() {}. Bind ({x: 1})()'. Cerca informazioni su [IIFE] (http://stackoverflow.com/questions/8228281/what-is-the-function-construct-in-javascript). – elclanrs
Sai perché non è consentito sulla dichiarazione? – user3448600
Perché non è un'espressione. La sintassi è ambigua, devi disambiguare forzando un'espressione. Controlla le specifiche per maggiori informazioni http://www.ecma-international.org/ecma-262/5.1/#sec-13 – elclanrs