me@helium преди 7 години
родител
ревизия
5f4ae16bd9
променени са 2 файла, в които са добавени 22 реда и са изтрити 1 реда
  1. 21 0
      02.md
  2. 1 1
      07.md

+ 21 - 0
02.md

@@ -178,6 +178,27 @@ var isYoung   = age > 16 && age < 30 // человек молод от 16 до 3
 
 **И**, напротив, "ищет" `false`. То есть, если найден `false`, то нет смысла далее обрабатывать выражение - оно, так или иначе, будет `false`.
 
+Учтите, что `||` и `&&` возвращают **не** `true` или `false` (значение булевского типа), а значения подвыражения как оно есть:
+Как `false` интерпретируются:
+- `false` 
+- `0` // 0 как число
+- `""` //пустая строка
+- `null`
+- `undefined`
+- `NaN`
+
+Как `true` интерпретируются все остальные значения, в том числе:
+- `Infinity`
+- `-Infinity`
+- `"0"` //строка не пуста. однако +"0" уже 0 как число, а значит false
+- `{}` //пустой объект - всё равно `true`
+- `[]` //пустой массив `[] == false`, но в остальных случаях работает как true
+
+**Для проверки используйте** `!!`, двойное отрицание: `!!null` равен `false`, таким образом мы можем почти всегда проверить как интерпретируется
+то или иное значение.
+
+В общем случае объект является `true`, за исключением `null` и `[] == false`
+
 Рассмотрим на [примерах](https://jsfiddle.net/qrjarv4m/13/)
 
 ### `if` `else`

+ 1 - 1
07.md

@@ -36,7 +36,7 @@ person2.alert(person2.name);
 var person = {
     name: "Ivan",
     surname: "Ivanov",
-    sayHi: function(text){
+    sayHi: function(){
         alert("Hi," + this.getFullName());
     }