Boolean ObjectThe Boolean object is an object wrapper for a Boolean value.The Boolean object is used to convert a non-Boolean value to a Boolean value (true or false).We define a Boolean object with the new keyword. The following code line defines a Boolean object called myBoolean:var myBoolean=new Boolean()Note: If the Boolean object has no initial value or if it is 0, -0, null, "", false, undefined, or NaN, the object is set to false. Otherwise it is true (even with the string "false")!All the following lines of code create Boolean objects with an initial value of false:var myBoolean=new Boolean()
var myBoolean=new Boolean(0)
var myBoolean=new Boolean(null)
var myBoolean=new Boolean("")
var myBoolean=new Boolean(false)
var myBoolean=new Boolean(NaN)And all the following lines of code create Boolean objects with an initial value of true:var myBoolean=new Boolean(true)
var myBoolean=new Boolean("true")
var myBoolean=new Boolean("false")
var myBoolean=new Boolean("Richard")

解决方案 »

  1.   

    这应该可以解释Boolean(" ")=true另一个不知道
      

  2.   

    我用的不是Boolean定义变量,用的是类型转化~~Boolean("  ") 不同于 new Boolean("  ")吧~~~
      

  3.   

    typeof Boolean("  ")  ----- boolean
    typeof new Boolean("  ")  ----- object
      

  4.   

    Boolean(value):强制转换为boolean类型
    alert(Boolean('')); //false   
    alert(Boolean('hello')); //true   
    alert(Boolean(100)); //true   
    alert(Boolean(0)); //false 
    alert(Boolean(NaN)); //false
    alert(Boolean(null)); //false   
    alert(Boolean(undefined)); //false   
    alert(Boolean(new Object())); //true new Boolean(value):
    创建初始值为value的Boolean对象
    其值为 false、0、null、 NaN,或者空字符串,则该 Boolean 对象的初始值为 false
    否则,初始值为 true
    就是说在创建new Boolean()对象的时候,先强制转型value值为Boolean类型
      

  5.   

    ls的没看懂我的意思~我的意思是
    Boolean("")=false
    Boolean(" ")=true
    但是:
    (" " == false)=true
    ("" == false)=true
    (false == false)=true这两种情况不是矛盾吗~
      

  6.   

    这个不难,问题在于“==”运算符当String类型与Boolean类型进行比较:
    先统一转成Number类型
    即" "==false
    转成:0==0
    自然是true再比如:
    alert(" "==false);//true  0==0
    alert(" 0"==false);//true 0==0
    alert("0 0"==false);//false NaN==0
    alert(" 00"==false);//true 0==0
    alert("00 "==false);//true 0==0
    alert(" 1"==false);//false 1==0
    alert(" 2"==false);//false 2==0
    alert(" 2"==true);//false 2==1
    alert(" aaa"==false);//false NaN==0
      

  7.   

    Boolean(" ")=true这个又怎么讲~
    " "要是转化成0的话那结果也应该是false~
      

  8.   

    Boolean(" ")
    是强制转换成Boolean类型,就要根据Boolean(value)的规则来
    我在6楼已经讲明:
    false、0、null、 NaN,或者空字符串,则该 Boolean 对象的初始值为 false
    否则,为true而" "不是空字符串,所以为true
      

  9.   

    当String类型与Boolean类型进行比较:
    先统一转成Number类型
    即" "==false
    转成:0==0
    自然是true
    ====================================
    问题是" "转化为NaN,""也是NaN,
    NaN==false 结果false
    NaN==NaN 结果false这个解释好像不通~我认为是String和boolean比较时,
    String转化为boolean~
    这样" "先经过trim(我认为)变成""
    而""转化为boolean是false
    因此才有" " == false但是,现在的疑问就在为这个String的trim的问题~
    当" "==""比较时,返回false,说明有没有trim~~~~
      

  10.   

    问题是" "转化为NaN,""也是NaN
    ---------------------------
    谁告诉你是这个结果的?
    alert(Number(""));//0
    alert(Number(" "));//0
      

  11.   

    lz认为是String和boolean比较时
    String转化为boolean~
    这样" "先经过trim(我认为)变成""
    而""转化为boolean是false
    因此才有" " == false
    ----------------
    lz再试试这个通不通了
    "0"==false
    String转化为boolean
    即true==false
    那结果应该是false//错误可是事实上是都转换成Number
    即0==0
    结果应该是true
      

  12.   

    lihui_shine还差多少升星啊?
      

  13.   

    谢ls的关心,我还早呢
    刚刚得的第5个裤衩
    菜鸟一个,呵呵
    而且来csdn不久,还请多多照顾啊
      

  14.   

    实在不好意思~我用的是parseInt(" ")结果是NaN~~~~~~parseInt(" ")这样说来新问题又来了~parseInt("  ")--NaN
    parseInt("")--NaN
    Number("") --NaN但是,二者的区别仅仅是
    parseInt()转化的是第一个非数字之前的部分,Number()转化的是整个串~那么怎么又会出现上面这种情况~~
      

  15.   

    上面写错~
    Number("") -- 0
    Number("  ") -- 0
    parseInt(" ")-- NaN
    parseInt("")-- NaN
      

  16.   

    并且,按照Number(new Object())---NaN的规则
    Number("  ")的结果是NaN才符合~
      

  17.   

    to lz:
    new Object()跟" "可不是一回事
    " "的类型是String,而不是Object
    比如:
    alert(Number(new Object()));//NaN
    alert(Number(new String()));//0
    区别立即显现
      

  18.   

    Number("") -- 0
    Number(" ") -- 0但是为什么:
    parseInt(" ")-- NaN
    parseInt("")-- NaN两种转化结果怎么可能不同~
      

  19.   

    这个就不是你我可能管的了
    如果用着不爽就尽量少用(即避免用)js就是这么规定的呀
    Number(new String()) -- 0
    parseInt(new String()) -- NaN作为程序员,在弄清楚之后,你可以认为他不合理,但必须遵从
      

  20.   

    上面这点不是我问题的本质~回到原题~
    Boolean("")=false
    Boolean(" ")=true
    但是:
    (" " == false)=true
    ("" == false)=true
    (false == false)=true这个才是我的问题的根源~~
    两种情况也是不一致的~问题原型就是,
    判断一个串是不是等于另一个串的时候,还有没有必要trim~
    这才是实用的关键 ~
      

  21.   

    因为在javascript应用中,我们都不需要显式转化,
    都是靠的系统自己的转化,那在不同的情况下,我们就会转化得到不一样的结果~
    这才是应用中存在的问题~
    其实就是一些边缘数据,如"","  "之类的~等~但我们往往在判断的时候用到的也就是这些边缘值~因此我才想到了问这些问题~
    这也许是大家在应用过程中都忽略的地方~
      

  22.   

    哎,我不是早就回答了吗?
    判断一个串是不是等于另一个串的时候,还有没有必要trim~
    答:不是没有必要trim,而是不会去做trim
        如:alert(" "==" a ");//false(" " == false)=true
    ("" == false)=true
    (false == false)=true
    答:出现这中情况是因为比较的类型不同
    当字符串跟布尔型进行比较,统一转换成Number类型
    " " == false
    转换成0==0,所以结果为true
    ""==false
    转换成0==0,所以结果为truefalse==false自然是true我不清楚你干嘛老抓着Boolean("")=false,Boolean(" ")=true不放,这跟
    (" " == false)=true
    ("" == false)=true
    毫无关系,跟
    (" " == false)=true
    ("" == false)=true
    有关系因该是Number("")=0,Number(" ")=0
      

  23.   

    lz有必要重新理下头绪
    不要想当然(当然,你NB可以自己搞一个语言,规则你自己定)
      

  24.   

    补充:
    (" " == false)=true
    ("" == false)=true
    相当于
    (Number(" ") == Number(false))=true
    (Number("") == Number(false))=truelz要是再不明白,不是你自杀
    该自杀的是我
      

  25.   

    我说了,单独针对数据实没有意义,但是因为在javascript应用中,我们都不需要显式转化,
    都是靠的系统自己的转化,那在不同的情况下,我们就会转化得到不一样的结果~
    这才是应用中存在的问题~
    其实就是一些边缘数据,如""," "之类的~等~但我们往往在判断的时候用到的也就是这些边缘值~因此我才想到了问这些问题~
    这也许是大家在应用过程中都忽略的地方~
      

  26.   

    还有~回lihui_shine(浪尖赏花) ( 五级(中级)) Boolean("")=false
    Boolean(" ")=true
    但是:
    (" " == false)=true
    ("" == false)=true
    (false == false)=true结合以上两种,那你说一下下面的题该怎么判断~
    别告诉我就是规定的~
    if(document.getElementById("aaa").value){
      ....
    }
    其中aaa是一个文本框~
    如果我想要的结果中允许是空的字符串,那该怎么实现~请你回答~注意,我允许用户输入空串("  ")~但不允许是空("")
    -----------------------------------------------------
    看问题不要太肤浅~,不是抓住什么不放,既然存在,就有存在的价值~
    等你研究明白这道题再来回答问题~别老是想当然~我明确告诉你我的结果:
    它是按照下面规则来验证的~
    Boolean("")=false
    Boolean(" ")=true
    而不是
    (" " == false)=true
    ("" == false)=true
    这条规则~~~
      

  27.   

    function check(){
      var v = document.getElementById("aaa").value;
      alert("*" + v + "*");
      if (v){
       alert("*" + v + "*");
      }
    }
    function check1(){
      var v = document.getElementById("aaa").value;
      alert("*" + v + "*");
      if (v == false){
       alert("*" + v + "*");
      }
    }<input type="text" name="aaa"/>
    <input type="button" name="bt2" onclick="check()" value="校验"/>
    <input type="button" name="bt3" onclick="check1()" value="校验1"/>1,执行check()时:
    当什么都不输入,结果是:
    **
    当输入"  "时,结果是
    *  *
    *  *
    2,执行check1()时:
    当什么都不输入,结果是:
    **
    **
    当输入"  "时,结果是
    *  *
    *  *很简单的验证~
    很容易看出不同来吧~
    知道这个问题的意义了吧~