首页 > 试题广场 >

下面这段程序的显示结果是?

[单选题]
下面这段程序的显示结果是?
var x = new Boolean(false);
if (x) {
  alert('hi'); 
}
var y = Boolean(0);
if (y) {
  alert('hello');  
}


  • hi
  • hi hello
  • hello
  • 不显示
此题考查的是 JS 的类型转换:
  • if(x) 这里期望 x 是一个布尔类型的原始值,而 x 是一个对象,任何对象转为布尔值,都为得到 true切记!在 JS 中,只有 0,-0,NaN,"",null,undefined 这六个值转布尔值时,结果为 false)。
  • 题目的第二部分,一定要注意 y = Boolean(0)而不是 y = new Boolean(0)。这两个有很大区别,用 new 调用构造函数会新建一个布尔对象,此处没有加 new,进行的是显示类型转换,正如上述第一条所说,0 转换布尔,结果为 false,所以此时 y 的值就是 false。如果加了 new,那么 y 就是一个 Boolean 类型的对象,执行 if(y) 时,对象转布尔,始终是 true,所以结果会与不加 new 的时候相反。
发表于 2018-01-03 15:06:02 回复(27)
1、
  varx =newBoolean(false);   为显式的创建基本包装类型对象的实例,对基本包装类型的实例调用typeof会返回"object",而且所有基本包装类型的对象都会被转换成布尔值 true 。
2、
   vary = Boolean(0);       为转型函数,保存基本类型的值。

发表于 2017-08-14 20:07:35 回复(0)
如果是基本类型的布尔值,x=true,那它就是true,如果x=false,那它就是false。可是如果它是对象类型的布尔值,不管它的值是true还是false,它本身都是true,因为对于对象来说,如果不是空对象,都会返回true。
发表于 2017-05-10 14:04:57 回复(0)
var oFalseObject = new Boolean(false);
var bResult = oFalseObject && true;    //输出 true
在这段代码中,用 false 值创建 Boolean 对象。然后用这个值与原始值 true 进行 AND 操作。在 Boolean 运算中,false 和 true 进行 AND 操作的结果是 false。不过,在这行代码中,计算的是 oFalseObject,而不是它的值 false。

当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。

如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且返回这个值。

注释:如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false")。

正如前面讨论过的,在 Boolean 表达式中,所有对象都会被自动转换为 true,所以 oFalseObject 的值是 true。然后 true 再与 true 进行 AND 操作,结果为 true。


编辑于 2015-06-05 23:39:41 回复(0)
  • new Boolean(false) 返回的是一个对象,在 if 语句中判断为 true
  • Boolean(0) 返回的是一个布尔值 false,在 if 语句中判断为 false
发表于 2022-06-01 17:11:42 回复(0)
试了一下,x是对象,var x=new Boolean();括号里面没有值,或者有false,true,0,1都会弹出hi。
发表于 2021-04-08 17:00:11 回复(0)
此题分为两点:(JS中)
    1.对象类型转换为布尔类型结果为true,并且只有0,-0,NaN,null,undefined,“”“这个6个值转换为布尔值时,结果为false。
    2.new Boolean(false)和Boolean(0)是不一样的,有new的就创建一个布尔类型的对象,没有new的是类型转换。
发表于 2020-03-14 14:51:03 回复(0)

我可不可以理解为:new出来的都是对象,转换成布尔值就是true??



发表于 2020-01-09 14:38:48 回复(0)
当一个值为false的Boolean对象放到条件语句当中的时候,Boolean对象的值会被当作true来计算,但是它本身的值并没有改变,依然是false。
发表于 2016-07-24 09:45:58 回复(0)
x为Boolen对象,在if语句里的判断为true,虽然x的值为false,但是作为对象,if会直接判断为true。y为Boolen值,在if里的判断就是false值。
编辑于 2015-09-06 17:01:34 回复(5)
If (obj){****}等价于If (obj != null ){****},故输出hi~考的都是基础,真的是欠了太多基础啦😭 且boolea是基础数据类型,Boolea(0)返回布尔值false,new Boolea (0)返回对象。第一次回答,多多指教花👼
编辑于 2016-03-10 23:29:06 回复(6)
注意Boolean对象与Boolean原始值的区别
var x = new Boolean(false);//x=false

当一个值为false的Boolean对象放到条件语句当中的时候,Boolean对象的值会被当作true来计算,但是它本身的值并没有改变,依然是false。
发表于 2015-04-09 19:23:58 回复(4)
是对 x,这个对象,而不是对它的值进行求值。
布尔表达式中所有对象都会被转换为true
发表于 2015-09-15 13:11:27 回复(0)
包装对象Boolean,尽量不要用显示声明,因为会导致类型发生变换
1.var obj=new Boolean('false');
typeof obj;//object  此时obj是一个非空对象,所以为真
2.var flag=Boolean(0);
typeof falg;//boolean 此时flag是一个基本数据类型,Boolean()仅执行的是强制类型转换,0对应的boolean是false
发表于 2016-08-28 21:03:39 回复(0)
基本包装类型Boolean ,使用构造函数时,变量是一个对象,而布尔表达式中的所有对象都会被转成true。

发表于 2016-04-12 21:31:27 回复(0)
发表于 2017-10-23 10:54:18 回复(2)
typeof x  ==> 'object'
typeof y ==> 'boolean'
大意失荆州。
发表于 2021-10-04 00:18:31 回复(0)

x的类型是object,值为falsey的类型是booleanif(obj)等价于if(obj != null)x不为空,故执行。if(boolean)等价于if(true)y==false,故不执行。

发表于 2017-08-14 11:49:07 回复(0)
A  new 出来的是对象,
发表于 2015-06-09 20:19:27 回复(0)
数据类型    
转换为true的值
转换为false的值        
Boolean            
true                         
false
String
任何非空字符串
空字符串
Number
任何非零数字值(包括无穷大)    
0和NaN
Object
任何对象
null
Undefined        
N/A
undefined

发表于 2017-06-27 20:09:07 回复(0)