74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | ||
| title: Falsy Values
 | ||
| localeTitle: Фальшивые ценности
 | ||
| ---
 | ||
| ## Описание
 | ||
| 
 | ||
| Значение фальши - это значение, которое оценивается как ЛОЖЬ, например, при проверке переменной. В JavaScript всего шесть значений false: `undefined` , `null` , `NaN` , `0` , `""` (пустая строка) и `false` конечно.
 | ||
| 
 | ||
| ## Проверка значений фальши на переменные
 | ||
| 
 | ||
| Можно проверить значение фальши в переменной с простым условным:
 | ||
| 
 | ||
| ```javascript
 | ||
| if (!variable) { 
 | ||
|   // When the variable has a falsy value the condition is true. 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| ## Общие примеры
 | ||
| 
 | ||
| ```javascript
 | ||
| var string = ""; // <-- falsy 
 | ||
|  
 | ||
|  var filledString = "some string in here"; // <-- truthy 
 | ||
|  
 | ||
|  var zero = 0; // <-- falsy 
 | ||
|  
 | ||
|  var numberGreaterThanZero // <-- truthy 
 | ||
|  
 | ||
|  var emptyArray = []; // <-- truthy, we'll explore more about this next 
 | ||
|  
 | ||
|  var emptyObject = {}; // <-- truthy 
 | ||
| ```
 | ||
| 
 | ||
| ## Развлечения с массивами
 | ||
| 
 | ||
| ```javascript
 | ||
| if ([] == false) // <-- truthy, will run code in if-block 
 | ||
|  
 | ||
|  if ([]) // <-- truthy, will also run code in if-block 
 | ||
|  
 | ||
|  if ([] == true) // <-- falsy, will NOT run code in if-block 
 | ||
|  
 | ||
|  if (![]) // <-- falsy, will also NOT run code in if-block 
 | ||
| ```
 | ||
| 
 | ||
| ## Предостережение
 | ||
| 
 | ||
| Помните о типе данных при оценке значения в булевом контексте. Если тип данных значения означает _число_ , оценка правдоподобия / ложности может привести к неожиданному результату:
 | ||
| 
 | ||
| ```javascript
 | ||
| const match = { teamA: 0, teamB: 1 } 
 | ||
|  if (match.teamA) 
 | ||
|   // The following won't run due to the falsy evaluation 
 | ||
|   console.log('Team A: ' + match.teamA); 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| Альтернативой приведенному выше `typeof` использования является оценка значения с использованием `typeof` :
 | ||
| 
 | ||
| ```javascript
 | ||
| const match = { teamA: 0, teamB: 1 } 
 | ||
|  if (typeof match.teamA === 'number') 
 | ||
|   console.log('Team A: ' + match.teamA); 
 | ||
|  } 
 | ||
| ```
 | ||
| 
 | ||
| ## Больше информации
 | ||
| 
 | ||
| *   **правдивый** | [Сообщение блога - Truthy & Falsey](http://james.padolsey.com/javascript/truthy-falsey/)
 | ||
|     
 | ||
| *   [Фальши | Глоссарий | MDN](https://developer.mozilla.org/en-US/docs/Glossary/Falsy)
 | ||
|     
 | ||
| *   [Truthy and Falsy: когда все не равно в JavaScript](https://www.sitepoint.com/javascript-truthy-falsy/) |