 
			
				29.08.2011, 16:44
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 29.06.2011 
					
					
					
						Сообщений: 445
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Javascript quiz - поразмять мозг
			 
			
		
		
		
		Наткнулся на любопытный  тестик. Как сказано в предисловии проверяются следующие знания:
 
	
 
	| 
		
			 Цитата: 
		
	 | 
 
	| 
		Quiz mainly focuses on knowledge of scoping, function expressions (and how they differ from function declarations), references, process of variable and function declaration, order of evaluation, and a couple more things...
	 | 
 
	
 
 Заставляет напрячься    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 16:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 17:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Kolyaj, почему так? несколько вопросов, которые ломают голову. ответьте пожалуйста   
var a = [1, 2], b = [1, 2];
a['3'] = 3;   
b['3b'] = 3;  // каг бэ в "b" добавляем
console.log(a.length + ' ' + b.length);
  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось melky, 29.08.2011 в 17:52.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 17:59
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 ⊞ Развернуть 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.01.2010 
					
					
					
						Сообщений: 1,810
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		каг бэ в "b" добавляем
	 | 
 
	
 
 length никак не связано с количеством "элементов" (которые на самом деле всего-лишь свойства объекта). length, по определению, число, большее любого индекса, приводимого к числу. 
var a = [];
a['9999'] = 5;
alert(a.length)
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 18:01
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.05.2008 
					
					
					
						Сообщений: 765
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от melky
			 
		
	 | 
 
	
		Kolyaj, почему так? несколько вопросов, которые ломают голову. ответьте пожалуйста   
 
var a = [1, 2], b = [1, 2];
a['3'] = 3;   
b['3b'] = 3;  // каг бэ в "b" добавляем
console.log(a.length + ' ' + b.length);
 
	 | 
 
	
 
 a['3'] приводится к числу и заполняет четвертый элемент, начиная с нуля. 
b['3b'] к числу не приводится, видимо, поэтому элемент не присваивается...  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 18:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 ⊞ Развернуть 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.01.2010 
					
					
					
						Сообщений: 1,810
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Snipe,  
var a = [];
a['3b'] = 'Hi!';
alert(a['3b'])
  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 18:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 sinistral 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 28.03.2011 
					
					
					
						Сообщений: 5,418
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Snipe
			 
		
	 | 
 
	| 
		a['3'] приводится к числу и заполняет четвертый элемент, начиная с нуля.
	 | 
 
	
 
 опечатка?
 
мне было в новинку это приведение к числу. я думал : "как будет строкой, так и останется".. но тогда будет путаница между свойством и элементом массива.
 
ясно, спасибо за ответы   
вот вывод консоли, на всякий
 
	
 
	| 
		 Код: 
	 | 
 
	> a = [1,2]
> a[ '3' ] = 3;
> a;
[1, 2, undefined, 3]  | 
 
	
 
 
	
 
	
		
			Сообщение от Snipe
			 
		
	 | 
 
	| 
		b['3b'] к числу не приводится, видимо, поэтому элемент не присваивается...
	 | 
 
	
 
 это уже считается как свойство объекта. как ассоциативный массив, видимо  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 18:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 06.05.2008 
					
					
					
						Сообщений: 765
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от melky
			 
		
	 | 
 
	| 
		опечатка?
	 | 
 
	
 
 нет 
a[0], a[1], a[2], a[3] - 4 элемента 
Длина массива считается по последнему элементу.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 18:20
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Подробней  http://alljs.ru/articles/array/whatis
	
 
	| 
		
			Сообщение от melky
			
		
	 | 
 
	| 
		мне было в новинку это приведение к числу. я думал : "как будет строкой, так и останется".. но тогда будет путаница между свойством и элементом массива.
	 | 
 
	
 
 Массив -- это объект, ключ объекта всегда строка, так что приведения к числу нет. Наоборот, в случае a[2] 2 приводится к строке.  
Подробней  http://javascript.ru/ecma/part15#a-15.4 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				29.08.2011, 18:21
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.02.2008 
					
					
					
						Сообщений: 9,177
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Snipe
			
		
	 | 
 
	| 
		 Длина массива считается по последнему элементу.
	 | 
 
	
 
 
var arr = new Array(10);
  arr.length == 10, но ни одного элемента в массиве нет.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |