Странные Boolean-конструкторы
Читаю документацию.
Вижу странную вещь. Написано, что мол нижеприведённые реализации Boolean'а возвращают false: var bNoParam = new Boolean(); var bZero = new Boolean(0); var bNull = new Boolean(null); var bEmptyString = new Boolean(''); var bfalse = new Boolean(false) А вот эти всегда возвращают true: var btrue = new Boolean(true); var btrueString = new Boolean('true'); var bfalseString = new Boolean('false'); var bSuLin = new Boolean('Су Лин'); var bArrayProto = new Boolean([]); var bObjProto = new Boolean({}); Возникло 2 вопроса: 1. Для чего это вообще нужно? Я уже не первый год пишу код, но на других объектно-ориентированных языках, и это меня удивило т.к. логику не просёк. Если тип булев, для чего такие конструкторы? 2. Почему эти возвращают истину: var bNull = new Boolean(null); var bEmptyString = new Boolean(''); var bfalse = new Boolean(false); не очень понятно. А те конструкторы, которые возвращают истину тоже странные. Например: это всё строки: var btrueString = new Boolean('true'); var bfalseString = new Boolean('false'); var bSuLin = new Boolean('Су Лин'); как по мне, это тоже самое что и: var bEmptyString = new Boolean(''); Но, оказывается, что оно не так. И ещё.. это вообще используется на практике? Или это лишь нечто, что есть и не более того? Я практичного применения не увидел сразу.. |
используются такие конструкторы крайне редко, я так вообще этот конструктор не использую, интерпретатор сам преобразует в булевый тип там где это надо.
в JS есть конструкции не логичные на первый взгляд, но ценности как правило из себя не представляют, которые просто надо иметь ввиду. |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 19:38. |