|
|
|
|
|
|
7.23, Аноним (-), 20:35, 26/06/2012 [^] [^^] [^^^] [ответить] [↓] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –1 +/– |
На данный момент главная притензия - нестабильный api. Причем не стабильный не изза объектмвных причин а из за самодурства разработчиков.
За каким спрашивается, чертом взять и переместить функцию exists из модуля path в модуль fs, ломая сотни сторонних модулей? А до этого sys взяли переименовали в utils, зачем?
| |
|
|
|
6.43, Аноним (-), 22:17, 26/06/2012 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Шутки шутками, а скрипты времен второго NN мой браузер 2012 года выпуска проигрывает.
А как дело обстоит с python, ruby, perl ...?
Вот чего чего а прямой и обратной совместимости у js не отнять.
if(!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^\s+|\s+$/g,'');
};
}
для питона в подобных ситуациях приходится все переписывать.
| |
|
|
|
|
|
|
2.21, Аноним (-), 20:29, 26/06/2012 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
Ну и синтаксис
d.run(function() {
process.nextTick(function() {
setTimeout(function() { // simulating some various async stuff
fs.open('non-existent file', 'r', function(er, fd) {
if (er) throw er;
// proceed...
});
}, 100);
});
});
Узнаю javascript-
}
});
}).listen(1337);
});
Вот поэтому и существует coffescript ,dart, ice, и еще много проектов которые компилятся в js. Читать такой код - пытка.
| |
|
|
|
5.57, хзкто (ok), 09:31, 27/06/2012 [^] [^^] [^^^] [ответить] [↓] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
> Так не получится, так как теряется основное преимущество js - замыкания.
вы сами писать пробовали? Методы отлично соседствуют с замыканиями и не приходится создавать многократную вложенность, всё в пределах разумного.
Кроме методов, для упрощения можно создавать замыкания не в момент передачи ( 'foo(function() {})' ), а вынося их в переменную ( 'var bar = function() {}; foo(bar);' ), иногда это делает код более понятным.
| |
|
6.59, Аноним (-), 10:00, 27/06/2012 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –1 +/– |
бла бла бла. Плавали знаем.
Если не использовать замыкания - какой смысл в javascript?
>Кроме методов, для упрощения
это ваше "упрощение" из за явного связывания приводит к трудноуловимым багам.
a = 10
setTimeout ->
console.log a
,1
a = 100
Результат 100
a = 10
func_maker = (x)->
->console.log x
setTimeout func_maker(a),1
a = 100
Результат 10 - Приятной отладки сцукu.
| |
|
7.60, Аноним (-), 10:13, 27/06/2012 [^] [^^] [^^^] [ответить] [↓] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –1 +/– |
Причем для полного счастья для ссылочных типов поведение кардинально отличается
obj = {}
obj.a = 10
setTimeout ->
console.log obj
,1
jbj.a = 100
Результат {a:100}
obj = {}
obj.a = 10
func_maker = (x)->
->console.log x
setTimeout func_maker(obj),1
obj.a = 100
результат (!)тоже {a:100}
И нафига такой гемор? Только контекстно зависимых языков мне нехватало.
| |
7.62, хзкто (ok), 10:36, 27/06/2012 [^] [^^] [^^^] [ответить] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –1 +/– |
> a = 10
> setTimeout ->
> console.log a
> ,1
> a = 100
такие "трудноуловимые баги" есть везде, достаточно 1 раз наступить на эти грабли, понять как оно работает и больше таких детских ошибок не допускать
> Результат 10 - Приятной отладки сцукu.
казалось бы, причём тут нода и js вообще? Эта ошибка сродни if(a = 1), такая же глупая
| |
|
|
|
|
|
|
|
2.37, Аноним (-), 21:39, 26/06/2012 [^] [^^] [^^^] [ответить] [↑] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +1 +/– |
> У меня один вопрос - ЗАЧЕМ? Зачем Windows?
MS наверное доплатил чтобы хоть какой-то нормальный фреймворк для вебни был под их систему в человеческом виде. Правда вот с такими перетрясками апи - на них все забьют, пожалуй.
- (разработчики фреймворка) А теперь вам надо броить все и переделать код!
- (разработчики программ) Да вы обуели?!
- (прожектманагеры, доставая пистолет и целясь себе в висок) Ба-бах!
- (админы, откупоривая порцию спиртного с горя) семь бед - один ответ!
| |
|
|
|
|
|
|
6.82, Аноним (-), 12:54, 27/06/2012 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| +/– |
>ИДЕ начинали сходить с ума на автокомплите
О боже. Какой ужас. Как можно писать без аутокомплита?
Это ведь придется, о страх господень, учить язык и, матерь божья, думать что ты пишешь, а не клацать без перерыва ctrl-space. Решительно невозможно заставлять разработчика так напрягаться. Общество Защиты Животных не позволит.
| |
|
7.86, Аноним (-), 13:56, 27/06/2012 [^] [^^] [^^^] [ответить] [п©Б∙╗ п©Б∙╙п©Б∙╛п©Б∙╒п©Б∙ёя▐Б■─п©Б∙÷я▐Б■▄п©Б∙╛я▐Б■─я▐Б■░]
| –1 +/– |
Нет это означает, что я не хочу помнить что мне нужно вызвать initFooBar(foo, bar) а не initBarFoo(bar, foo). Вы очевидно не писали ничего сложнее хелловорда если так презрительно отзываетесь об автокомплите, я, например, не обезьяна что б тратить своё время на подобную глупость.
А то что я замечу эту ошибку только в рантайме (кстати не факт что замечу сразу) - просто приятный бонус.
| |
|
|
|
|
|
|
|