Комментарии 39
0
Да, согласен — частично пересекается. Но:
1. Той статье больше года.
2. Я старался показать нововведения с точки зрения Java/C# программиста, та статья все-же для JS-программистов имхо.
1. Той статье больше года.
2. Я старался показать нововведения с точки зрения Java/C# программиста, та статья все-же для JS-программистов имхо.
0
Да, но разве вы исследуете какие-то новые API с момента прошлогодней публикации?
Объясните мне, в чём разница взгляда на спецификацию со стороны JavaScript-программиста и Java/C# программиста?Может стоит написать ещё несколько обзоров с точки зрения Python / Ruby / Haskell программистов?
Объясните мне, в чём разница взгляда на спецификацию со стороны JavaScript-программиста и Java/C# программиста?
0
Объясните мне, в чём разница взгляда на спецификацию со стороны JavaScript-программиста и Java/C# программиста?
Ок, поясняю. Java-программист, который на JS не писал ничего сложнее ajax-вызова через jQuery скорее всего плохо знаком с прототипным наследованием. Теперь этот человек может начать писать более сложную логику на JS, не выходя из своей зоны комфорта и используя привычные классы. Может я не сделал на этом акцент — тогда моя вина. Ну и как-бы в 2014 ES6 API уже можно начинать использовать. Не просто там рассуждать как хорошо будет, а брать и писать. Каким образом — я тоже пояснил.
Может стоит написать ещё несколько обзоров с точки зрения Python / Ruby / Haskell программистов?
Да, я вот почитал-бы взгляд на JS со стороны Haskell-прогера. Потому что в хаскелле совершенно другие конструкции и соответственно другие привычки у человека. Напишете?
+4
Спасибо за развернутый ответ! Хоть вопрос и выглядит несколько саркастичным (за что я уже поплатился), он таковым не является. Мне правда интересно, как видят язык программисты из других областей, <имхо>но я всё же считаю излишним описывать каждую спецификацию со стороны программистов других областей (представьте, какой каламбур будет, если JS программисты будут описывать новые спецификации C++ и т.п.)</имхо>.
По поводу взгляд на JS со стороны Haskell-программиста: к сожалению, не напишу из-за слабого знания последнего. Однако, если вам интересно почитать про функциональное программирование на JS, то на хабре уже есть несколько статей на эту тему.
Есть у ECMA-6 и Java/C# что-то общее помимо классов (которые являются синтаксическим сахаром поверх прототипного наследования) и лямбд? Вы пишете про сравнение с точки зрения Java/C# программиста, а упоминание данных ЯП я вижу только в двух местах.
Ситуация за год не изменилась.
<имхо>Мне нравится статья и как она написана (за мелкими исключениями), но либо вы опоздали с её публикацией (на год), либо сделали не на то акцент (потому что выглядит как дополнение к предыдущей статье). И извините за прямолинейность и не сочтите за оскорбление.</имхо>
По поводу взгляд на JS со стороны Haskell-программиста: к сожалению, не напишу из-за слабого знания последнего. Однако, если вам интересно почитать про функциональное программирование на JS, то на хабре уже есть несколько статей на эту тему.
Есть у ECMA-6 и Java/C# что-то общее помимо классов (которые являются синтаксическим сахаром поверх прототипного наследования) и лямбд? Вы пишете про сравнение с точки зрения Java/C# программиста, а упоминание данных ЯП я вижу только в двух местах.
Хром, к примеру, не поддерживает большинство вещей из списка, если не включен флаг Enable Experimental JavaScript. Выход — использовать Traceur, компилятор из ES 6 в ES 5.
Ситуация за год не изменилась.
Ну и как-бы в 2014 ES6 API уже можно начинать использоватьЭто мнение автора или чем-то обоснованная позиция? Так как если вы посмотрите на traceur и его дату создания, то он существовал ещё с 2011 года (хоть и поддерживал далеко не всё), что позволяло ещё в тех годах использовать вышеописанные в статье фичи новой спецификации.
<имхо>Мне нравится статья и как она написана (за мелкими исключениями), но либо вы опоздали с её публикацией (на год), либо сделали не на то акцент (потому что выглядит как дополнение к предыдущей статье). И извините за прямолинейность и не сочтите за оскорбление.</имхо>
+1
Ок, не буду спорить, возможно я слабо развил тему похожести конструкций в ES6 и Java/C#, а так-же упустил возможность описать некоторые нововведения, которые не были описаны в той статье. Думаю, на этом можно прекратить спор.
По поводу вашего первого имхо скажу свое (имхо): JS сейчас в тренде, и многие программисты на других языках могут захотеть хотя-бы даже просто посмотреть «а-все-ли-так-печально-как-10-лет-назад». Однако я не видел много туториалов по JS, где использовали-бы классы, и возможность использовать ES6 to ES5 компилятор не лежит на поверхности.
По поводу вашего первого имхо скажу свое (имхо): JS сейчас в тренде, и многие программисты на других языках могут захотеть хотя-бы даже просто посмотреть «а-все-ли-так-печально-как-10-лет-назад». Однако я не видел много туториалов по JS, где использовали-бы классы, и возможность использовать ES6 to ES5 компилятор не лежит на поверхности.
0
<offtopic>Ну ладно «декларировать», черт с ним. Но «дефинировать» — это уже перебор, по-моему.</offtopic>
+18
Слово «дефиниция» в русском существует, нравится вам это или нет.
-8
И глагол «дефинировать»? Или, может быть, «дефиницировать»?
+9
А зачем вы выдумали какого-то словесного урода, если есть общепринятый и всем понятный термин «определять»?
+18
Есть более привычный/распространенный вариант «объявить».
+11
Что касается частоты использования
дефинировать переменную — 1 210 результатов
определить переменную — 667 000 результатов
объявить переменную — 164 000 результатов
дефинировать переменную — 1 210 результатов
определить переменную — 667 000 результатов
объявить переменную — 164 000 результатов
+9
Спасибо, вспомнил некоторые забытые вещи :)
Пара комментариев:
habrahabr.ru/post/132698/#comment_4404597
Можно ещё так:
Пара комментариев:
«Традиционное» наследование как в Java/C# можно так-же эмулировать через протопипную модель (код приводить не буду, чтобы не раздувать статью).
habrahabr.ru/post/132698/#comment_4404597
Теперь можно обменивать значения без временной переменной, что сокращает код.
Можно ещё так:
var x = 1, y = 2
x = [y, y=x][0]
+1
можно подумать, что это наследование — не просто сахар поверх.
Доказательство(пишу по памяти, могу где-то немного накосячить):
Неожиданно, правда? А все потому что это обертка поверх Object.create
Доказательство(пишу по памяти, могу где-то немного накосячить):
class Horse{
constructor(){this._speed = 5;}
get speed(){return this._speed}
}
class HorseWithTransmission extends Horse{
set speed(val){this._speed = val}
}
new HorseWithTransmission().speed //=> undefined
Неожиданно, правда? А все потому что это обертка поверх Object.create
0
class Bicycle extends Vehicle {Сдались.
+5
Вы не упомянули про
Очень удобная фича, учитывая отсутствие sprintf по дефолту.
Ну и в догонку
var name = 'nkt';
console.log(`Hello, ${name}!`); // Hello nkt
Очень удобная фича, учитывая отсутствие sprintf по дефолту.
Ну и в догонку
var name = 'nkt';
var options = {name}; // {name: name}
+2
Так тут почти ни о чём не упомянули. Еще, на вскидку: модульная система, генераторы, протокол итераторов,
for-of
, абстракции массивов / генераторов, аргументы функции по умолчанию, rest / spread, динамические ключи в литерале объекта, оптимизация хвостовой рекурсии, стандартная библиотека: Symbol
, Proxy
, Promise
, Map
, Set
, WeakMap
, WeakSet
, не считая расширения уже имеющихся объектов.+2
Ну во-первых не ставил я цель написать обо всем, извините. Об этом я предупреждаю:
А во вторых часть из упомянутого вами сейчас не работает нигде, включая компиляторы в ES5 (типа оптимизации хвостовой рекурсии).
Так как изменений очень много, опишу субъективно самые важные.
А во вторых часть из упомянутого вами сейчас не работает нигде, включая компиляторы в ES5 (типа оптимизации хвостовой рекурсии).
0
И что ещё, кроме неё, не работает? :)
0
ну можно же взять и самому посмотреть, че к человеку пристали. kangax.github.io/compat-table/es6/
По факту много чего еще нету даже в компиляторах.
По факту много чего еще нету даже в компиляторах.
-1
Так дайте хоть один конкретный пример :) Я утверждаю, что всё остальное, что я упомянул, можно использовать с препроцессором и полифилом стандартной библиотеки. Разве что Proxy полноценно сполифилить нельзя, но он и так уже не мало где имеется.
0
Дабы не быть голословным, накидаю примеров в песочнице: модульная система, генераторы, протокол итераторов, for-of, абстракции массивов / генераторов, аргументы функции по умолчанию, rest / spread, динамические ключи в литерале объекта, стандартная библиотека: Symbol, Promise (и не только), Map, Set, WeakMap, WeakSet. Вы уверены, что того человека обвинили в незнании возможностей ES6, которыми можно пользоваться уже сейчас? :)
0
Синтаксический сахар классов конечно впечатляет, но лучше бы сделали нормальное множественное наследование с интерфейсами и статическими методами, а не а-ля typescript
-2
НЛО прилетело и опубликовало эту надпись здесь
let отдает бейсиком
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Ecmascript 6 — что можно использовать уже сейчас