2015-05-29 2 views
-1

Интересно, почему alert(new Boolean(false)) печатает false вместо того, чтобы печатать объект, поскольку новый Boolean должен возвращать объект. Он работает так, как он должен работать, если я использую console.log(new Boolean(false))alert (new Boolean (false)) vs console.log (new Boolean (false))

+0

'alert' ожидает строку, поэтому она преобразует вашу логическую строку в строку. Ничего странного здесь не работает. –

ответ

2

alert() отображает значение аргумента, переданного ему, .toString().

Значение toString() объекта Boolean либо true, либо false.

+0

'console.log (Boolean (" false "));' он бросает true как вывод почему так? –

+0

@PardeepJain функция 'Boolean()' преобразует любую непустую строку в 'true' и пустые строки в' false': 'Boolean ('false') === true',' Boolean ('hello') = == true', 'Boolean ('') === false'. – JLRishe

+0

Да, такое же решение уже есть btw thanx :) еще одна вещь 'consol.log (Boolean (0))' также вернет 'false' может быть из-за логического значения false = 0, тогда как true = 1. –

0

alert() показывает свое значение в своей примитивной форме, так как Boolean является примитивным типом данных. Затем он пытается преобразовать его в строку, и результат отображается пользователю.

Вот что console.log() также делает, однако он показывает в немного более подробно, в виде булевой примитивного значения, как это: {[[PrimitiveValue]]: false}

То же самое будет происходить с любыми типами примитивных значений. Попробуйте new Number(1).

0

Когда Boolean используется как конструктор, он не возвращает примитив, а возвращает объект, а console.log отображает этот объект. где в качестве предупреждения используется указатель toString, определенный для объекта для отображения значения.

Смежные вопросы