簡體   English   中英

什么javascript對象打印為false,是真的,並且是類型“對象”?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM