Se supone que esta función devuelve un objeto, sin embargo, la construcción utilizada a continuación no me resulta familiar. ¿Cómo funciona esta función?
function expect(value) { return { toBe: exp => console.log(success) } }Esta es una función estándar de JavaScript:
function(parameter1, parameter2) { return returnVal; }Pero el objeto que se devuelve se ve así:
{ toBe: exp => console.log(success) }Que es un objeto que contiene una función de flecha ES6, y puede expresarse alternativamente así (una traducción directa a una función ES5):
{ toBe: function(exp) { return console.log(success); } }Lea aquí para obtener más información sobre la notación de función de flecha ES6.
Creo que vale la pena recalcar que devuelve un objeto con una clave que contiene una función como valor. Puede ejecutarlo de la misma manera para ejecutar un método que pertenece a una clase. Ocultamente falla porque no hay un éxito definido.
function expect(value) { return { toBe: exp => console.log(success) } } let res = expect('value') console.log(res) res.toBe('test')Diría que esta es la intención del código, en mi opinión, esto tiene mucho sentido; la evaluación se realiza cuando se invoca a toBe, esto invoca a console.log (que prueba la condición, cuando se invoca e imprime el resultado):
function expect(value) { return { toBe: exp => console.log(exp === value) } } expect('value').toBe('value') expect('notvalue').toBe('value')