Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.03.2011, 21:17
Аватар для yolka
Интересующийся
Отправить личное сообщение для yolka Посмотреть профиль Найти все сообщения от yolka
 
Регистрация: 14.09.2009
Сообщений: 13

Побитовый оператор >>>
Очень часто встречаю применение побитового оператора >>> в подобном примере:

var array = [1,2,3], 
length = array.length >>> 0;

for (var i = 0; i < length ; i++) {
/* . . . */
}

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

Ну в общем-то он тут не нужен.
Ответить с цитированием
  #3 (permalink)  
Старый 15.03.2011, 23:30
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Возможно, это делается для того, чтобы количество итераций цикла не превысило максимального 32-битного значения 4294967295.

Если по каким-то причинам массив заимеет больше 4294967295 элементов (O_o), то «благодаря» сдвигу >>> цикл не станет пробегать все эти элементы массива, а «урежет» старшие разряды (дальше 32-го), и тогда, например, 4294967296 превратится в 0, 4294967297 — в 1, а 449812501682 — в 3135902898 (легко проверить на калькуляторе отбрасыванием разрядов выше 32-го).

Возможно, есть и другой смысл…
Ответить с цитированием
  #4 (permalink)  
Старый 16.03.2011, 17:58
Аватар для yolka
Интересующийся
Отправить личное сообщение для yolka Посмотреть профиль Найти все сообщения от yolka
 
Регистрация: 14.09.2009
Сообщений: 13

Сообщение от Kolyaj
Ну в общем-то он тут не нужен.
по этой причине?:
Сообщение от Amphiluke
Если по каким-то причинам массив заимеет больше 4294967295
Сообщение от Amphiluke
Возможно, есть и другой смысл…
получается, что такая перестраховка в большинстве случаев бессмыслена, и не стоит выполнять лишнюю операцию и вообще, скажется ли на производительности цикла такая дополнительная опреация?
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2011, 18:01
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

yolka

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает оператор new когда функция-конструктор что-то возвращает ? olek Общие вопросы Javascript 2 06.03.2011 12:17
как запихнуть в массив оператор ? mitiya Общие вопросы Javascript 2 09.02.2011 18:57
Что за оператор !! и что он делает? demoniqus Общие вопросы Javascript 2 23.11.2010 18:54
Оператор "И" (and) - обозначение qwermjk Общие вопросы Javascript 5 07.10.2010 07:34
условный оператор If...else simple Общие вопросы Javascript 6 01.10.2010 22:57