Цитата:
|
Цитата:
test('/***.../', function () {
var test = function () {
/***/
/*!*/
/**/
//
};
equal(test.__doc__, '');
});
|
Цитата:
Цитата:
Цитата:
В Python например, пошли еще дальше, и включили работу с Docstring в REPL. # *.py def function (): ''' Empty function ''' ...
➜ python
python> help()
help> print
function ()
'Empty function'
|
Цитата:
/\/\*[!*]([\s\S]*?)\*\//:) Она и с флагом g вроде корректно ищет. |
Цитата:
|
Цитата:
function F(args, body) {
return new Function(args, "return " + body);
}
array.map(F("x", "x * x"));
array.filter(F("x", "x % 2"));
array.sort(F("a, b", "Math.sign(a - b)"));
if (array.every(F("x", "x === true"))) {
…
}
Но так и не решаюсь использовать в реальном коде из-за предрассудков о кодогенерации :-? |
Цитата:
|
Цитата:
|
Интересно а оправдан ли чем то вот такой подход (просто в голову стукнуло).
Здесь кодогенерация сведена к минимуму, а расходы памяти такие же как если бы все функции были бы объявлены заранее.
function F(args, body) {
F.cache=F.cache||{};
F.cache[args+body]=F.cache[args+body]||new Function(args, "return " + body);
return F.cache[args+body];
}
alert(F("x,y","x+y")(1, 2));
|
Кстати IE11 сам умеет оптимизировать, цикл с деятком тысяч итераций вызывает F за несколько миллисекунд, если тело не меняется.
|
| Часовой пояс GMT +3, время: 00:46. |