Повторное использование функции, возвращающей внутреннюю функцию - PullRequest
0 голосов
/ 22 января 2019

Как я могу заставить f ("Michael") возвращать строку "Michael"?

Мне нужно, чтобы f () приводил к «Майклу», а f («Майкл») («Джексон») для получения Майкла Джексона

    function f (firstName) {
        var nameIntro = "This celebrity is ";
        
       function lastName (theLastName) {
            return nameIntro + firstName + " " + theLastName;
        }
        return lastName;
    }
    
    
    
    console.log(f ("Michael")("Jackson"))

I'm really after a solution for this..
The above original question was not precise enough..
f()='f'
f('it' ) == 'fit'
f()('x') == 'fox'
f()()('bar') == 'foobar'

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вот мой дубль с явным свойством, добавленным к возвращаемой функции.

function nameFormatter(firstName) {
    var intro = "This celebrity is ";

  function rest (lastName) {
    return intro + firstName + " " + lastName;
  }

  rest.firstName = firstName;
  return rest;
}

var f = nameFormatter("Michael")
console.log(f);
console.log(f.firstName);
console.log(f("Jackson"));
0 голосов
/ 22 января 2019

Вы можете реализовать функцию toString, которая вызывается, если среда ожидает примитивное значение.

function f(firstName) {
    function lastName(theLastName) {
        return nameIntro + firstName + " " + theLastName;
    }
    var nameIntro = "This celebrity is ";

    lastName.toString = function () { return firstName; };
    return lastName;
}
    
console.log(f("Michael")("Jackson"));
console.log(f("Michael"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...