Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2018, 21:58
hoz hoz вне форума
Интересующийся
Отправить личное сообщение для hoz Посмотреть профиль Найти все сообщения от hoz
 
Регистрация: 26.11.2018
Сообщений: 19

Странные 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('');

Но, оказывается, что оно не так.
И ещё.. это вообще используется на практике? Или это лишь нечто, что есть и не более того? Я практичного применения не увидел сразу..
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2018, 22:06
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

используются такие конструкторы крайне редко, я так вообще этот конструктор не использую, интерпретатор сам преобразует в булевый тип там где это надо.
в JS есть конструкции не логичные на первый взгляд, но ценности как правило из себя не представляют, которые просто надо иметь ввиду.
Ответить с цитированием
  #3 (permalink)  
Старый 27.11.2018, 01:32
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от hoz
это всё строки:
var btrueString = new Boolean('true');
var bfalseString = new Boolean('false');
var bSuLin = new Boolean('Су Лин');

как по мне, это тоже самое что и:
var bEmptyString = new Boolean('');
То есть строки 'true', 'false' и 'Су Лин' имеют нулевую длину как и пустая строка? Не пустая строка как булево значение всегда есть true, пустая false, и назовите другой язык программирования где это не так.
Ответить с цитированием
  #4 (permalink)  
Старый 28.11.2018, 00:54
hoz hoz вне форума
Интересующийся
Отправить личное сообщение для hoz Посмотреть профиль Найти все сообщения от hoz
 
Регистрация: 26.11.2018
Сообщений: 19

Сообщение от laimas Посмотреть сообщение
То есть строки 'true', 'false' и 'Су Лин' имеют нулевую длину как и пустая строка? Не пустая строка как булево значение всегда есть true, пустая false, и назовите другой язык программирования где это не так.
Да, это так. Но интересно где это может быть применимо на практике. Мне не доводилось ещё подобное применять. Сколько писал, а такое даже теоритически не было необходимости применять.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить задачку( создать конструкторы) Ксения 80 Общие вопросы Javascript 3 21.10.2018 20:36
Ajax возвращает только boolean и числа. Почему? timecom AJAX и COMET 2 27.07.2018 00:40
как подключить фильтр к гриду? remember_me ExtJS 3 17.07.2013 16:04
непонятно про приведение null к boolean udav Общие вопросы Javascript 8 27.02.2012 05:50
Конструкторы пхп Golovastik Серверные языки и технологии 10 23.11.2010 07:52