Олег
Будет быстрее чем все остальные
кстати далеко не факт был кейс фильтровать большой массив данных, а затем мапить его с помощью рамды написал трансдьюсер, который делал это за один проход, результат: нативный способ был быстрее в 3 раза
Дима
Хотя в принципе я не то чтобы удивлён, в рамде довольно много фич, чтобы получались пенальти по производительности
Muhammad Sodiq
Ребят есть ресурсы где можно почитать про подводные камни JS, чтобы самому меньшу наступать на них?
Muhammad Sodiq
На подобие JavaScript Garden?
Alexander
0.1 + 0.2 != 0.3
Alexander
Пока хватит тебе :)
Oleg
Это в очень многих языках так
Oleg
Но новичков в программировании вообще - да, пугает
melvin
a = [1,2,3];a[3]=a
Oleg
Ну это тоже во многих языках
melvin
ну и классек
melvin
var i=5; i = ++i+++i+++i+++i;
Oleg
ReferenceError: Prefix ++ operator applied to value that is not a reference.
Oleg
Не, давайте именно вот камни JS
Oleg
Префиксы тоже во многих языках есть
melvin
ты вода
melvin
в джсе объекты это хештаблицы?
Oleg
А вот теперь чисто JS [] + [] // "" [] + {} // "[object Object]" {} + {} // "[object Object][object Object]" {} + [] // 0
melvin
как раз изза этого язык и забросил
Oleg
Самое страшное что там всё логично
Oleg
А вот теперь чисто JS [] + [] // "" [] + {} // "[object Object]" {} + {} // "[object Object][object Object]" {} + [] // 0
НО - если ввести это не в консоле - одно из выражений выдаст ошибку, угадайте какое
Oleg
:DDD
Oleg
Ошибка правда не кладящая, но тем не менее
melvin
Anonymous
3
Anonymous
И 4,
Oleg
3
Верно
Anonymous
Для меня не ясно вот это ~~{q:1} === 0*
Anonymous
~~{}
так и?
Oleg
Тоже самое
Oleg
То есть не важно что за объект
Anonymous
Что происходит при применении побитового не к объекту?
Anonymous
И вот ~~[1] !== 0
Oleg
NaN
Oleg
Объект становится NaN, это 0 при побитовом
Oleg
В JS весело, правда? :D
Muhammad Sodiq
Oleg
[1] это '1', при переводе в число - это 1
Oleg
1 !== 0
Muhammad Sodiq
0.1 + 0.2 != 0.3
Не на столько я зеленый
Oleg
А секрет в том что toString и valueOf методы вызываются при преобразовании
Anonymous
Еще лучше
Oleg
Еще лучше
Ну так нормально же, какая там 5 в двоичной системе?
Muhammad Sodiq
на es5 это все, на es6 убрали эти недостатки?
Oleg
Обратная совместимость сурова
Oleg
Но некоторые вещи убирают по чуть-чуть
Oleg
В классах насильно стоит 'use strict'
Anonymous
Ну так нормально же, какая там 5 в двоичной системе?
А, точно, в синтаксисе parseInt запустался
Oleg
Просто проблемы эти все в неочевидных toString для некоторых
Oleg
С другой стороны их можно переопределять для своих объектов
Oleg
Классический пример - своему классу Person при сложении со строкой сделать чтобы возвращал имя этого Person в стиле Привет ${person = new Person('Вася')}!
Oleg
А там toString метод, который всё делает как надо и выводит имя, а может и ещё чего
Oleg
И подобное такое
Anonymous
на каких ОСях вы кодите?
Oleg
Мак наше всё
Андрей
Винда
ixplo
Винда
Oleg
Жду линуксойдов в треде
ixplo
Есть люди на линухе
Андрей
Ну, у меня линукс в винде. Считается?)
Anonymous
и как вообще на винде со всем этими нодами и другими штуками из жс мира?
Oleg
Нода это же от хрома кусок
Oleg
А хром чувствует себя прекрасно в винде
Андрей
а надо наоборот)
Зачем? Линукс на жесктопе нинужен.
Чурка
Каким местом этоп одводный камень ?
Чурка
a = [1,2,3];a[3]=a
Андрей
Андрей
Вот всё прекрасно в винде с линухом)
Андрей
Правда давно не обновлял окружение
Чурка
Языки, в которых массивы передаются по значению пересчитать по пальцам.
Oleg
Каким местом этоп одводный камень ?
Я думаю автор этого примера раньше писал на паскале и для него это нонсенс
Андрей
Дима
на каких ОСях вы кодите?
Переехал с десятки на арч