Я лично против "кода в строке", в любом его виде. Попахивает.
И так для вас ввели: Пример: JavaScript 1.8
alert( (function(x,y)x+y)(1,2) );что ещё надо то?) |
Цитата:
alert(((x, y) => x + y)(1, 2)); Правд нативно это тока в ФФ, но я уже больше года юзаю трансляторы и всё не нарадуюсь :) |
Цитата:
В своём Collection я уже давно ввёл поддержку строковых сокращений для фильтров в дополнение к простым функциям:
$C([1,2,3]).get(':el > 2');
Или же:
$C().addFilter({
'filter1': function () {},
'filter2': function () {},
'filter3': function () {},
'filter4': 'filter3 || filter2'
});
$C([1,2,3]).get('filter1 && filter2 || filter4');
Первый вариант на практике оказался очень удобным применительно в шаблонах: https://github.com/kobezzza/Snakeskin#foreach-1 но в JS с введением Arrow Function от него мало проку. А вот второй вариант оказался очень удобным и я регулярно его использую. |
а я юзаю кофесткрипт, меня тим перубедил и он был прав, и даже круглые скобки не ставлю теперь
|
Как смотрите на то, чтобы маркировать тип переменной с помощью меток?
function example1() {
integer:var index;
string:var name;
}
function example2() {
integer:var index;
integer:var count;
string:var name;
string:var value;
}
function example3() {
integer:var index, count;
string:var name, value;
}
function example4() {
integer:var index = 1, count;
string:var name, value = "none";
}
UglifyJS может автоматически поудалять эти метки, для продакшион версии. |
Не выдумывай и юзай JSDoc или Dart/TypeScript :)
|
Цитата:
|
Цитата:
Недавно адаптировал скрипт для работы в браузере, ну и чтобы работало в IE8, убирал из скрипта NFE, например:
document.addEventListener("click", function callback(event) {
document.removeEventListener("click", callback);
…
});
нужно переделать в:
function callback(event) {
document.removeEventListener("click", callback);
…
}
document.addEventListener("click", callback);
Но это муторно все функции переделывать в FD, иногда имена совпадают, не всегда нужны эти функции в общем скопе и т.д.arguments.callee использовать нельзя, потому что весь код в strict режиме исполняется в нормальных браузерах.Можно облегчить себе жизнь, написав функцию, наподобие bind, но выполняющую привязку только для первого аргумента, и в качестве значения этого аргумента должна отправляться ссылка на bound-функцию:
function nfe(targetFunc) {
function boundFunc() {
Array.prototype.unshift.call(arguments, boundFunc);
return targetFunc.apply(this, arguments);
}
return boundFunc;
}
Теперь можно делать так:
document.addEventListener("click", nfe(function (callback, event) {
document.removeEventListener("click", callback);
…
}));
или так:
setTimeout(nfe(function (onTime) {
…
setTimeout(onTime, 100);
}), 100);
|
| Часовой пояс GMT +3, время: 00:46. |