Я лично против "кода в строке", в любом его виде. Попахивает.
И так для вас ввели: Пример: 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, время: 16:52. |