Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 11.07.2011, 10:20
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

какая разница между forEach и every, например, в моей задаче (прерывание) ?

даже передают обе одинаковые аргументы - член массива, ключ, весь массив
Ответить с цитированием
  #22 (permalink)  
Старый 11.07.2011, 11:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

melky,
ещё один неправильно реализующий стандартные функции.
Ответить с цитированием
  #23 (permalink)  
Старый 11.07.2011, 13:20
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

if( typeof Array.prototype.forEach === 'undefined' )
   Array.prototype.forEach = function (iterator, context) {
    for (var i = 0, length = this.length >>> 0; i < length; i++) {
      if (i in this) iterator.call(context, this[i], i, this);
    }
  }


Prototype.js

я просто с ума от изящества

но зачем делать так ?
this.length >>> 0

Пример: это же Math.floor
alert ( [ "_______","|examples :","_______", "|9 >>> 0", "=> "+ (9 >>> 0), "| 9.8 >>> 0", "=> "+ (9.8 >>> 0), "_______"].join("\n") );


можно было и так, Kolyaj
if( typeof Array.prototype.forEach === 'undefined' )
   Array.prototype.forEach =  function(fn, ctx) {
            for (var i = 0, l = this.length; i < l; i++) 
                       if (i in this)   
                           fn.call(ctx, this[i], i, this);
        };


ну а прерывать как? через метание ?

Последний раз редактировалось melky, 11.07.2011 в 13:29.
Ответить с цитированием
  #24 (permalink)  
Старый 11.07.2011, 13:55
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

http://jsperf.com/array-each.

Я думаю, nuff said;

всем спасибо.

Последний раз редактировалось melky, 11.07.2011 в 13:58.
Ответить с цитированием
  #25 (permalink)  
Старый 11.07.2011, 14:09
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

melky,
а зачем ты мой ник приписал к функции, к которой я не имею никакого отношения?
Ответить с цитированием
  #26 (permalink)  
Старый 11.07.2011, 14:14
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

да ладно. какая разница?
Ответить с цитированием
  #27 (permalink)  
Старый 11.07.2011, 14:16
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Непонятен смысл твоего сравнения. Ты сравниваешь плохую реализацию (throw) с неправильной (i--).
Ответить с цитированием
  #28 (permalink)  
Старый 11.07.2011, 14:18
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

это не реализация функции по-умолчанию, а написание своей, с возможностью прервать её, Kolyaj

сколько способов реализации знаю, так и написал
Ответить с цитированием
  #29 (permalink)  
Старый 14.07.2011, 13:03
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

использовать исключения плохо

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

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

Последний раз редактировалось tenshi, 14.07.2011 в 13:10.
Ответить с цитированием
  #30 (permalink)  
Старый 14.07.2011, 13:21
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от melky
но зачем делать так ?
this.length >>> 0
во-первых, для инвертирования типа к целочисленному значению (иногда может быть удобней чем унарный +)

alert([typeof '10', typeof ('10' >>> 0)])


во-вторых, для того чтобы предотвратить выход за пределы максимально допустимого диапазона чисел.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
$('my').load(); Как сделать, чтобы это заработало mycoding Общие вопросы Javascript 25 02.10.2016 23:43
2 function в 1 LAV45 AJAX и COMET 5 27.07.2011 14:49
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 21:43
CComponent - кроссбраузерные компоненты tenshi Ваши сайты и скрипты 5 20.04.2010 23:22
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12