w3schools valor una tipos retornar pasar parametros funciones funcion desde basicas anonimas anidadas javascript function callable

javascript - valor - ¿Cuál es la diferencia entre un objeto de función y un objeto invocable?



retornar valor de una funcion javascript (1)

En términos generales, un objeto puede llamarse sin ser una función. En un lenguaje donde todo es un objeto (incluidas las funciones), los objetos invocables no tienen que descender de una clase de Función.

En JS, parece que un Callable es cualquier cosa que tenga el método interno [[Call]] (identificado por un tipo de ''función'', en oposición a ''objeto''). Una función (como se usa en la diapositiva) es un descendiente del objeto Function. Podría estar equivocado, pero dentro de un script solo puede crear Funciones mientras que la implementación de ECMAScript puede definir Callables que no son Funciones.

Si prueba el fragmento de código de la diapositiva con funciones anónimas / expresiones de función y con funciones declaradas, los resultados son los mismos.

typeof function() {}; // == ''function'' ({}).toString.call(function() {}) // == ''[object Function]'' function foo() {} typeof foo; // == ''function'' ({}).toString.call(foo) // == ''[object Function]''

Recientemente vi la presentación sobre los cambios en ECMAScript 5 . Y hubo una diapositiva con esta declaración:

Función vs Llamada

typeof f === ''function'' // → f is Callable ({}).toString.call(f) === ''[object Function]'' // → f is a Function

¿Alguien puede explicarme cuál es la diferencia entre Function y Callable ?