将任何数据类型(String Number ...)转换为布尔值而不使用Boolean()方法

时间:2015-02-26 23:00:07

标签: javascript

有没有办法(布尔方法除外)将任何数据类型转换为布尔值?这是一个面试问题,我没有回答。

3 个答案:

答案 0 :(得分:2)

Two Logical NOT !!

逻辑并不总是返回Boolean值,无论其数据类型如何 用于:

If the operand is an object, `false` is returned.
If the operand is an empty string, `true` is returned.
If the operand is a nonempty string, `false` is returned.
If the operand is the number 0, `true` is returned.
If the operand is any number other than 0 (including Infinity), `false` is returned.
If the operand is null, `true` is returned.
If the operand is NaN, `true` is returned.
If the operand is undefined, `true` is returned.

逻辑NOT运算符也可用于将值转换为其布尔等效值。通过使用 连续两个NOT运算符,可以有效地模拟Boolean()转换的行为 功能。无论给出什么操作数,第一个NOT都返回一个布尔值。第二 NOT否定布尔值,因此给出变量的真实布尔值。最终的结果是 与在值

上使用Boolean()函数相同

答案 1 :(得分:0)

转换为布尔值的抽象操作称为ToBoolean

  • 未定义:false
  • Null:false
  • Boolean:结果等于输入参数(无转换)。
  • 数字:如果参数为false+0−0,则结果为NaN;否则结果为true
  • String:如果参数为空String(其长度为零),则结果为false;否则结果为true
  • 对象:true

但是,此操作是内部操作,不可用。

但是有一些解决方法可以使用它:

答案 2 :(得分:0)

隐式:

!!variable;

显式:

variable ? true : false;