Как Демолишун упоминает в ответе на закрытый дублирующий вопрос, существует ветка , в которой говорится об этой проблеме. Поток создан в августе 2009 года, и один из разработчиков говорит , что код отладки был оставлен случайно . Я установил Pygame 1.9.1 из pip, и выходные данные отладки все еще присутствуют.
Чтобы обойти это сейчас, я скачал исходник с pygame.org, удалил операторы печати из src / joystick.c и скомпилировал код.
Я нахожусь на OS X 10.7.5 для того, что это стоит.
Так как вопрос состоит в том, почему, это имеет отношение, как JS был разработан.
существует 2 главных причины, о которых я могу думать для объяснения этого поведения:
Производительность: Учитывая x = 10000
и new Array(x)
мудро для конструктора избежать цикличного выполнения от 0 до 10 000 для заполнения массива undefined
значения.
Неявно "неопределенный": Дайте a = [undefined, undefined]
и b = new Array(2)
, a[1]
и b[1]
и возвратится undefined
, но a[8]
и b[8]
также возвратится undefined
, даже если они будут вне диапазона.
В конечном счете, нотация empty x 3
является ярлыком, чтобы не устанавливать и отображать длинный список undefined
значения, которые являются undefined
так или иначе, потому что они не объявляются явно.
Примечание: Учитывая массив a = [0]
и a[9] = 9
, console.log(a)
возвратится (10) [0, empty x 8, 9]
, заполняя разрыв автоматически путем возврата различия между двумя значениями, объявленными явно.