25.05.2014, 11:41
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от nerv_
|
только не кофе
Называется, угадай что:
if ((x) => x * x) {
}
|
Странный у тебя пример
А вообще Arrow Function - это самое лучшее что есть в ES6, т.к.
1) Очень короткий и ясный синтаксис:
var foo = (x) => {
return x * x;
};
// Ещё короче
var foo2 = (x) => x * x;
// Ещё короче :)
var foo3 = x => x * x;
2) Наследует this контекста в котором функция декларирована
var foo = {
go: function () {
var bar = () => {
this.val // 1
};
}
val: 1
};
3) Внутри Arrow Function не доступна ссылка arguments, что делает возможным дополнительную оптимизацию на уровне JIT и даст ощутимый профит при использовании вместе со всякими итераторами и т.д. ну а если нужен аналог arguments, то
var foo = (...args) => {
...
};
Последний раз редактировалось kobezzza, 25.05.2014 в 11:48.
|
|
25.05.2014, 13:08
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от nerv_
|
if ((x) => x * x) {
}
|
Все очевидно — такая запись не имеет смысла
Презервативы с подогревом
Последний раз редактировалось monolithed, 25.05.2014 в 13:21.
|
|
25.05.2014, 14:07
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от monolithed
|
такая запись не имеет смысла
|
Может он имел в виду, что будет нечто подобное http://jsfiddle.net/5954r/:
var f, y = 10;
if (f = (x) => x*x, f(y)) alert('it is worked!');
?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Последний раз редактировалось Gozar, 25.05.2014 в 14:11.
|
|
25.05.2014, 14:14
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от monolithed
|
Все очевидно — такая запись не имеет смысла
|
это называется найди 10 отличий
1.
// (x) => x * x
if (function(x){return x*x;}) {
alert(1);
}
if ((x) <= x * x && (x) => x * x && (x) >= x * x) {
alert(1);
}
2.
var t1 = (function(x) {
return x*x;
}());
// вот тут x() что я делаю, угадай:
// 1. вызываю arrow function
// 2. или вызываю x()
var t2 = ((x) => x*x());
Если ты выберешь, любой из вариантов, я скажу, что имел вииду другой.
Если ты ничего не выберешь, ты не угадал
kobezzza, я не против тех плюшек, которые несут arrow function. Но синтаксис, по крайней мере на первый взгляд, мне не нравится
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 25.05.2014 в 14:18.
|
|
25.05.2014, 14:17
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
var f = x => x * x;
if (f(10)) alert('it is worked!');
Я бы так написал
Сообщение от nerv_
|
но синтаксис, по крайней мере на первый взгляд, мне не нравится
|
Он идеален, за одним исключением, что нужны пустые скобки если нет параметров
Последний раз редактировалось monolithed, 25.05.2014 в 14:21.
|
|
25.05.2014, 14:28
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от nerv_
|
синтаксис, по крайней мере на первый взгляд, мне не нравится
|
Сообщение от monolithed
|
Я бы так написал
|
А мне нравится, надоели уже эти function и return-ы, занимают время и место.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
25.05.2014, 14:32
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Gozar
|
А мне нравится, надоели уже эти function и return-ы, занимают время и место.
|
Ага, еще бы ввели гарды и убрали лишние скобки цены бы не было
|
|
25.05.2014, 14:53
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Gozar
|
А мне нравится, надоели уже эти function и return-ы, занимают время и место.
|
представь, что у тебя на экране дофига кода вида
var b = x => 2 * Math.PI;
var a = с <= z + y;
При беглом просмотре не понятно где функции, а где НЕ функции.
Т.е. приходится вчитываться, а это время.
Касательно времени набора - автокомплит. Я пишу "fu" или "re" и этого достаточно. А вот читается в разы лучше.
Неужели мы движемся в сторону ручной обсфукации
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
25.05.2014, 15:06
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от nerv_
|
Неужели мы движемся в сторону ручной обсфукации
|
По твоей логике, Haskell, Erlang, Python, Lisp это обфускаторы?
Даже в C# и С++ есть лямбда-выражения
|
|
25.05.2014, 16:48
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от nerv_
|
автокомплит
|
Да, есть такой. Не решает проблему:
Сообщение от Gozar
|
занимают время и место
|
Сообщение от nerv_
|
читается
|
Как выучишь, так и читается. Я помню, что когда увидел впервые Javascript сильно удивлялся и ругался, а когда узнал про Регулярные Выражения думал - как вообще можно понять, что в подобной строке
// /^(?:(?:(?:http(?:s)?:\/\/|www\.)[-.a-z0-9а-яё]+?\.[a-zрф]{2,5}(?::[0-9]+)?)(?:\/[-a-z0-9а-яё.,!?&#$@/:;+_=%|^*}{\\`~]+[^.,!?\s\["<])?)$/
написано?! Однако эту строку написал я через полгода. И сейчас меня совсем не парит подобная запись и читается она нормально
Мир разнообразен и хочу, чтобы js больше был похож на python, нежели на ООП php или лапшу. В js слишком многабукв. Давно пора добавить сахарку.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
|
|