2927

Тёмная сторона JavaScript

Тёмная сторона JavaScript
Вы смотрите срез комментариев. Показать все
1
Автор поста оценил этот комментарий

Единственное что вызывает вопрос это "5"-3

раскрыть ветку (62)
9
DELETED
Автор поста оценил этот комментарий

Всё логично.

+ для JS это по умолчанию конкатенация. Пытаемся привести всех участников к строке.

- математическая операция. По возможности пытаемся привести всех участников операции к числу.

К слову сказать:

'5' + - 2 => '5-2'

+ '5' + - 2 => 3

Во втором случае первый плюс воспринимается как присвоения знака, и соответственно строка, по возможности, приводится к числу.

раскрыть ветку (39)
10
Автор поста оценил этот комментарий

Ненавижу языки такого типа

раскрыть ветку (33)
21
DELETED
Автор поста оценил этот комментарий

reference error: 'Ненавижу' is not defined

6
Автор поста оценил этот комментарий

Просто у вас нормального жабаскрипта не было!


Я еще года два назад нос ворочал от JS, а сейчас это один из моих любимых языков! Как мне не хватает некоторых его возможностей в джаве и шарпе...

раскрыть ветку (23)
2
Автор поста оценил этот комментарий

Я вот недавно начал учить JS после PHP, тяжеловато, но терпимо. Мне вот интересно, когда знаешь несколько языков, которые довольно сильно отличаются между собой, не путаешся постоянно или со временем это проходит?

раскрыть ветку (10)
1
Автор поста оценил этот комментарий

После пхп что угодно жестью будет. Люди, начавшие путь программера с пхп полностью потеряны для общества.


someObect->getSomeString."rightconcatenatedstring"   <-- блять что ЭТО? Кто придумывал этот ебучий язык?!

1
Автор поста оценил этот комментарий
Пишу одновременно клиент и сервер. Первый на as3+flex (знаю, многие и за язык не считают:)), второй на питоне. Одновременно чуть ли не в прямом смысле. Написал кусочек там, перевел (продублировал логику) и там. Поначалу путался, точку с запятой в питоне ставил часто или машинально скобками условие if оборачивал. Потом прошло
раскрыть ветку (3)
1
Автор поста оценил этот комментарий
да, привыкаешь, мозг на автомате переключается
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

а вот еще момент. Лет 5 не писал на С, лет 8 на в.бэйсике. Совсем не помню сейчас, что там и как. А раньше зарабатывал ими.

0
Автор поста оценил этот комментарий

Ну я сейчас тоже пилю сервер на джаве, бд на оракле, клиент. При том в клиенте и верстаю сам (суки верстаки заебали говно подсовывать!). Плюс дома на шарпе и немношко на дельфи (совсем немношко). Так что по сути полностью одновременно на java + js + css3 + html5 + plsql.

Не путаться помогает хорошая IDE (как же мне не хватает нормальной иде для оракла!).

0
Автор поста оценил этот комментарий

Ну как... Если я сейчас снова сяду за дельфи или плюсы - я буду по началу путаться.

Но я сейчас активно пишу на джаве, шарпе и джаваскрипте (ну и плюс хранимые процедуры oracle sql). В принципе не путаюсь (только иногда в джаве ссылочное сравнение по инерции ставлю как ===).

0
Автор поста оценил этот комментарий

я путаюсь часто с горячими клавишами при дебаге. чуть ли ни ежедневно по работе переключаюсь между IntelliJ IDEA, Visual Studio и Dev Tools в хроме и у них у всех разные хоткеи... вот это проблема

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Неужели хоткеи не настраиваются? Или лень?
0
Автор поста оценил этот комментарий

Я когда-то давно плотно сидел на эклипсе. Теперь у меня во всех средах разработки стоят хоткеи от эклипса. В идее там вообще есть пресет от эклипса, донастраивать минимум.

0
Автор поста оценил этот комментарий
и залипаешь такой, f8 или f10 :)
0
Автор поста оценил этот комментарий

А чего в шарпе то не хватает?

var есть, делегаты есть, а больше отличий то и нет никаких.

раскрыть ветку (7)
0
Автор поста оценил этот комментарий

Вернись сюда через месяцок-другой, если будешь учить шарп.)

раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Я как бы шарп, джава(нескрипт) и немного веб программист... Наоборот, в шарпе есть много того, чего в джаваскрипте нет. Но шарп покрывает возможности JS полностью.

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Что насчет подмены функций существующего объекта и т.д.?
Все, что касается динамики реализовано в шарпе очень уныло.

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Что за подмена функций существующего объекта? Делегаты? Функции как параметр другой функции? То бишь колбэки, ты их имеешь ввиду?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Нет. Подмена функции как таковой. Что-то вроде x.prototype.func = function() { somethingElse(); x.prototype.func(); }

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Не таким образом, но есть. Делегаты. По сути, это параметр, который что-то делает в себе, прежде чем вернуть результат (или не вернуть - void).

Нечто вроде

delegate object[] Blabla(object[] objs); // самый универсальный делегат, который можно придумать

object[] someFunc(object[] obj)

{
object[] result = new object[2];

if (obj.length > 0)

{

result[0] = "ok";

result[1] = obj[0] + obj[1];

}

else

result[0] = "notOk";

return result;

}
main()

{

Blabla blabla = someFunc;

Console.WriteLine(((blabla()[0] as String).equals("ok"))?(blabla()[1] as String):"WTF?!");
// вернет ВТФ?!

Console.WriteLine(((blabla(1,2)[0] as String).equals("ok"))?(blabla()[1] as String):"WTF?!");

// вернет 3
/* тут можно blabla присвоить другую функцию и так же вызвать blabla(). И я почти уверен, что функции можно прямо в тексте программы писать, но хз как, ибо не пользовался никогда такими извращениями. И приведенным извращением тоже не пользовался. Вообще делегаты юзал всего один раз в жизни, ибо интерфейсы их для моих задач полностью заменяют.*/

}

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий
Каких именно?
раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Как минимум замыканий и объектов в виде ассоциативного массива.

раскрыть ветку (2)
1
Автор поста оценил этот комментарий
есть замыкания и в яве и в шарпе
0
Автор поста оценил этот комментарий

И массивы ассоциативные есть, правда работают через массивы объектов с именем, но суть то не меняется.

3
Автор поста оценил этот комментарий
Просто нехуя складывать что попало:) Если меня бы спросили, сколько будет жопа плюс пикабу, я бы тоже что попало ответил))
раскрыть ветку (4)
6
DELETED
Автор поста оценил этот комментарий

Как что? Клубничка.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий
А клубничка минус жопа??))
раскрыть ветку (2)
3
Автор поста оценил этот комментарий
Жесть же.
2
DELETED
Автор поста оценил этот комментарий

Много минусов. Или сиськи.

2
Автор поста оценил этот комментарий

Перед изучением языков типа JS/Ruby/PHP/Perl в принципе рекомендуется изучить один из этих - Java/C++/Python.

Рекомендуется гуглом.

https://www.google.com/about/careers/students/guide-to-techn...


Как человек, который перед тем как освоить свой первый высокоуровневый язык гонял плюсы/пролог/вба/ассемблер, согласен.

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

питон тут не должен быть

0
Автор поста оценил этот комментарий
Согласен, шарп ещё
1
Автор поста оценил этот комментарий

Во втором случае первый плюс используется в качестве операции приведения типа. Это официально задокументированная возможность.

раскрыть ветку (2)
0
Автор поста оценил этот комментарий
Но мало кто знает, что для приведения типов можно по-человечески явно вызывать конструкторы.

> Number("-2")
-2

0
DELETED
Автор поста оценил этот комментарий

Действительно. Спасибо, буду знать.

Это объясняет такое поведение:

+ '-2'  =>  -2

0
Автор поста оценил этот комментарий

логично с точки зрения пользователя языка, или дизайнера отстаивающего логичность своего творения?

К примеру при создании обьекта с прототипом копируются (неявно) все данные, кроме... массивов.

child.f = func(); // child only

child.n = 5; // child only

child.a.push(6); // every single object


child.n = []; // child and his childs

child.n.push(5); // child and his childs


Логично, массивы ведь по ссылке отдаются.

0
Автор поста оценил этот комментарий

а по невозможности приводит к NaN а нан это вообще объект, и там ей чё сделаешь, надо '5'|0

2
Автор поста оценил этот комментарий

А '5' + - '2' - норм?

раскрыть ветку (8)
0
DELETED
Автор поста оценил этот комментарий

Оператор + из-за строчного операнда слева будет ломиться делать конкатенацию. И сделает её, несмотря на то что правый операнд будет намбером (в результате работы оператора "-").

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Так-то вроде и понятно...

Но вот в языке со строгой типизацией пришлось бы написать:

'5' + '-' + '2'

И в таком варианте не только машине, но и человеку становится сразу ясно, что здесь происходит.

раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Ну, на то он и язык с динамической типизацией. Дело привычки человека, а интерпретатор никто спрашивать не будет.

0
Автор поста оценил этот комментарий

Чуть-чуть не так. Выражение конкатенации у оператора "+" имеет бОльший приоритет, чем выражение математической суммы.

раскрыть ветку (4)
2
DELETED
Автор поста оценил этот комментарий

Дело не в приоритете а в типе данных операнда.

0
Автор поста оценил этот комментарий

Ага, почему тогда +'5' + 2 сработает?

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Потому что оператор "+" в качестве оператора приведения типа имеет еще больший приоритет. В таком режиме он работает если левого операнда нет.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

По-моему вы усложняете. Это просто унарный плюс (как и в остальных языках) и т.к. он применим только к числам - строка приводится к числу. Нет операторов приведения типов

1
Автор поста оценил этот комментарий
Я не знаю js, но скорее всего плюс работает как логический и из-за того что символ пятерки стоит первее то и все считается строкой, а минус бывает только арифметический поэтому все с ним считается числами.
раскрыть ветку (12)
3
DELETED
Автор поста оценил этот комментарий

Нет. Просто особенность работы оператора в js. Приведение к булеву типу тут не причем.

1
Автор поста оценил этот комментарий

В си-подобных языках оператор "плюс" используется и как оператор конкатенации строк, причем приоритет конкатенации выше, чем приоритет сложения.

раскрыть ветку (10)
0
, и твою маму тоже
Автор поста оценил этот комментарий

да нет у них "приоритетов", есть порядок разбора выражения. если первый операнд строка, значит плюс рассматривается как оператор конкатенации.

и наоборот


очень хорошо такие вещи начинаешь понимать раскуривая питон. там наглядно и просто можно формировать поведение операторов для любых комбинаций типов слева и справа. в сях тоже можно перегружать операторы, но это душно и скучно

раскрыть ветку (9)
Автор поста оценил этот комментарий

https://msdn.microsoft.com/ru-ru/library/z3ks45k7(v=vs.94).a...


Это не питон. Это ООП. Не надо, пожалуйста, приводить пародии на языки в качестве примеров для описания работы языков.


PS: Лично мне кажется, что раскуривать коровью лепешку куда более полезное действие, чем раскуривание питона. Ваш комментарий это наглядно показывает.

раскрыть ветку (8)
0
Автор поста оценил этот комментарий

И еще один очередной смелый и разговорчивый господин меня в игнор добавил. Горе, сильное горе.

раскрыть ветку (6)
0
Автор поста оценил этот комментарий

Чувак, ты добавил меня в игнор, и сидишь обновляешь страницу, чтобы прочитать, что я написал? Где ебаная логика?..

раскрыть ветку (4)
Автор поста оценил этот комментарий

@moderator, парень хочет немного отдохнуть от пикабу...

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

@moderator, там по ветке еще осталось. Господин очень хочет отдохнуть.

, и твою маму тоже
Автор поста оценил этот комментарий

разрыдался и мамочку позвал? ой молодец, раскрылся в танце на все сто.

, и твою маму тоже
Автор поста оценил этот комментарий
Комментарий удален. Причина: оскорбление пользователей.
, и твою маму тоже
Автор поста оценил этот комментарий
Комментарий удален. Причина: оскорбление пользователей.
, и твою маму тоже
Автор поста оценил этот комментарий
а почему ссылка на мсдн? какое отношение мс имеет к реализации js в том же вебките? а ваш снобизм и резкость выдает в вас полного уебана. скачи-ка нахуй, прогромизд
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества