Обертывание Для в циклах, с если операторы в JavaScript — цикличное выполнение по массивам

Я не использовал никого сам, но существуют некоторые инструменты, упомянутые на странице DDD Wikipedia. Большинство из них, кажется, реализовано в Java все же.

http://en.wikipedia.org/wiki/Domain-driven_design#Software_tools_to_support_domain-driven_design

8
задан DevDevDev 26 October 2009 в 18:34
поделиться

3 ответа

JSLint жалуется на многое, что на самом деле не вредно. В этом случае правильно жаловаться на for ... в , потому что это неправильная конструкция для цикла по массиву.

Это потому, что вы получите не только цифровые клавиши, но и любые другие произвольные свойства, которые были добавлены в массив или его Array.prototype. Последнее обычно происходит от вспомогательных функций расширения, добавляемых фреймворками.

Хотя вы можете победить этот случай с помощью hasOwnProperty , чтобы убедиться, что он не является членом прототипа, это уродливее, чем просто делать это правильно с for (var i = 0 ...) так зачем беспокоиться.

Кроме того, с for ... in вы не обязательно будете получать элементы в числовом порядке, как вы могли ожидать.

Он жалуется, что i уже был определен.

9
ответ дан 5 December 2019 в 07:58
поделиться

На самом деле вам не нужно слушать jslint. Но если вы действительно хотите просто передать (что приятно), вы можете сделать:

var myArray = [1, 2, 3];
for (var value in myArray)
{
  if (myArray.hasOwnProperty(value)) {
    // BLAH
  }
}

Для второй части вы должны либо поместить их в функции, либо использовать другие переменные. Другое решение - просто использовать i вместо var i второй раз, потому что он уже определен ...

8
ответ дан 5 December 2019 в 07:58
поделиться

Если вы посмотрите документацию JSLint, вы найдете ссылку, объясняющую обоснование фильтрации циклов for-in : в основном, это во избежание споткнуться о любых перечислимых свойствах добавлены в прототип объекта. (Хотя вы в любом случае не должны использовать for-in для итерации по массиву.)

Во втором случае вы объявляете переменную дважды: переменные имеют область действия (или глобальную область видимости) в JavaScript. Дуглас Крокфорд и, следовательно, JSLint, утверждают, что лучше объявить переменную только один раз для области, в которой она находится:

var i;

for (i = 0; i < 10; i++)
{
   // foo
}

for (i =0; i < 20; i++)
{
   // bar
}
4
ответ дан 5 December 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: