[英]What javascript object prints as false, is truthy, and is type “object”?
我正在尝试调试BIRT报告,我从reportContext中检索了一个参数,如下所示: var myParameter = reportContext.getParameterValue("myParameter");
BIRT没有调试器,BIRT javascript无法访问JSON.stringify,所以除了打印它之外,我无法检查这个变量是什么。 当我打印它时,它打印为“假”。 typeof(myParameter)
是“object”, myParameter === null
计算结果为false, myParameter === undefined
计算结果为false, myParameter == "false"
计算结果为false,myParameter结果为真(如果我用它作为守护者) if语句,执行if语句)。 这个变量究竟是什么,我怎样才能确定它是什么? 有没有办法在不使用JSON.stringify的情况下对其进行字符串化,而我无法在BIRT中访问它?
> new Boolean(false).toString()
'false'
> typeof new Boolean(false)
'object'
> !!new Boolean(false)
true
>
要检查这是否实际上是您的对象, new Boolean(false).constructor
返回(字符串化) [Function: Boolean]
。
SLaks给出的答案非常接近,并让我弄清楚它到底是什么:BIRT javascript可以调用Java代码并使用Java对象和类 - myParameter是BIRT的Java布尔对象的Javascript版本(不是Java布尔基元,或Javascript布尔对象,或Javascript布尔基元)。
考虑一些带有自定义toString()
函数的自定义对象,后者返回false。
function MyType() {} MyType.prototype.toString = function() { return "false"; }; var a = new MyType(); console.log( String( a ) ); console.log( typeof a ); console.log( Boolean( a ) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.