Size: a a a

2021 February 10

К

Константин in javascript_ru
Denys Mikhalenko
function foo() {
 console.log('foo')
 return 42
}
function bar() {
 console.log('foo() was called')
 return foo()
}
console.log(bar())
дает нам
foo() was called
foo
42
как получить
foo
foo() was called
42
???
так это, оператор ,
источник

DM

Denys Mikhalenko in javascript_ru
А куда его?
источник

К

Константин in javascript_ru
аа, нет...тоже не канает
источник

К

Константин in javascript_ru
ну или
function a () {
    return [a(), log()][0]
}
источник

К

Константин in javascript_ru
тоже говно
источник

DM

Denys Mikhalenko in javascript_ru
ну тут по сути есть переменная
источник

DM

Denys Mikhalenko in javascript_ru
просто она - ячейка массива )
источник

К

Константин in javascript_ru
ну вообще это на уровне VM даже невозможно
источник

К

Константин in javascript_ru
так как буде push/call/pop
источник

К

Константин in javascript_ru
ему все равно надо менять положение стека
источник

DM

Denys Mikhalenko in javascript_ru
Возможно!
источник

DM

Denys Mikhalenko in javascript_ru
Я только что придумал )
источник

DM

Denys Mikhalenko in javascript_ru
Очень изящное решение
источник

К

Константин in javascript_ru
Ну давай.
Я потом посмотрим в инсайгте (или как он там у node называется) что там JIT сгенерит =)
источник

К

Константин in javascript_ru
молодец
источник

К

Константин in javascript_ru
дропнул перф
источник

DM

Denys Mikhalenko in javascript_ru
Ну дык речь о перфомансе не шла )
источник

К

Константин in javascript_ru
я лучше тогда массив возьму
источник

К

Константин in javascript_ru
он и то будет более валидным =)
источник

DM

Denys Mikhalenko in javascript_ru
Я кстати слыхал они там try/catch люто заоптимизировали
источник