Dlaczego jest to dozwolone?Użycie function.prototype.bind bezpośrednio w deklaracji funkcji
var f = function() {
console.log(this.x);
}.bind({x:1})();
I dlaczego nie jest to lub lepiej, dlaczego dostaję błąd składniowy w tym przypadku?
function f() {
console.log(this.x);
}.bind({x:1})();
Więc dlaczego muszę funkcja wyraz składni, aby dostać tę pracę i czy jest jakiś sposób, aby wykorzystać bind
metodę bezpośrednio na deklaracji funkcji?
Deklaracja funkcji nie jest wyrażeniem, więc nie można tego zrobić. Ale możesz wymusić wyrażenie '! Function f() {}. Bind ({x: 1})()'. Poszukaj informacji na [IIFE] (http://stackoverflow.com/questions/8228281/what-is-the-function-construct-in-javascript). – elclanrs
Czy wiesz, dlaczego nie można składać deklaracji? – user3448600
Bo to nie jest wyrażenie. Składnia jest niejednoznaczna, musisz ujednoznacznić się przez wymuszenie wyrażenia. Sprawdź specyfikację, aby uzyskać więcej informacji http://www.ecma-international.org/ecma-262/5.1/#sec-13 – elclanrs