2014-07-25 5 views
2

Мне сложно понять этот код. Может ли кто-нибудь попытаться объяснить, почему массив может иметь элементы и длину 0?Длина массива Javascript в функции щелчка

var myArray = []; 
myArray["hello"] = 4; 
myArray["world"] = 65; 
$('#btn').on('click',function() { 
    console.log(myArray.length); // Prints 0 
    console.log(myArray); // Prints [hello: 4, world: 65] 
    console.log(myArray.length); // Prints 0 
} 
+0

это не асинхронный, и вы используете фреймворк, который вам поможет 80% удовольствия от javascript. Поэтому, пожалуйста, не забывайте об этом в своих тегах (я добавил его для вас) – Sebas

+0

, вам может понадобиться Object.keys (myArray) .length, но вы скорее всего должны использовать объект вместо массива. – dandavis

+0

Длина только добавляет числовые индексированные свойства, вы используете «Array» в этом примере в качестве словаря. Если вы хотите пройти через «Массив», вы можете поместить 'String' и' Number' в 'Object' и вставить это в' Array'. –

ответ

4

Свойство .length относится только к свойствам с цифровой индексацией.

+2

Без обид, @Pointy, но, хотя это правда, на самом деле это не ответ на вопрос. То, что он сделал здесь, создает экземпляр нового объекта массива, а затем добавляет свойства к этому объекту с именем 'hello' и' world'. Он задает свойства массива * object *, а не элементы самого массива. – Grinn

+1

@grinn: FWIW, элементы массива являются свойствами объекта. Каждое свойство с численным положительным 32-битным (или так) именем свойства считается элементом. –

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – acrosman

Смежные вопросы