[英]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.