Показать сообщение отдельно
  #30 (permalink)  
Старый 11.08.2014, 13:12
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Сообщение от newobject Посмотреть сообщение
Ну, я насколько помню, "родная" реализация map рекурсивная. Возможно они так и сделали.
Родная реализация может измениться в любой момент. Принцип мапа в том, что для всех элементов массива вызывается функция, которая преобразует их значение и помещает в другой массив: никакой рекурсией тут не пахнет. Кроме того, гугл про утечки памяти в связи в map ничего не пишет: https://www.google.com/search?q=memo...s+array+map+js

Но да, он медленнее. Т.к. у тебя критичное к скорости место, можешь заменить на for, ничего не имею против, просто мне было удобнее написать с мапом.

Сообщение от newobject Посмотреть сообщение
Просто привычка. А это имеет какое-то значение?
Это излишне многословно. Ты создаешь переменную и присваиваешь ей function expression вместо того, чтобы сразу написать function declaration. Просто лишние телодвижения. Кроме того, твои переменные хойстятся и до присвоения, условно говоря, имя функции есть, а самой функции нет. Кроме того, у функции, объявленной через function expression нет arguments.callee.name. Должны быть еще какие-то тонкие нюансы, но это надо глубоко в спецификацию лезть, а мне лень. В учебнике рекомендуется использовать function declaration почти во всех случаях:

Цитата:
Function Declaration короче и лучше читается. Дополнительный бонус — такие функции можно вызывать до того, как они объявлены.

Используйте Function Expression только там, где это действительно нужно. Например, для объявления функции в зависимости от условий.
И да, ответь мне в той теме, где я показал результаты профайлинга.
Ответить с цитированием