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")
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")
解决方案 »
- EXTJS GridPanel 拉动横滚动条到最右边,点击行数据出现滚动条回滚到初始位置
- 用javascript怎样实现DW属性面板中的链接作用
- 为什么有这么多undefined?!
- JQuery如何为XML对象添加节点
- document.body.getElementsByTagName("A")获取相对连接问题
- 求一个向左一次滚动一张图片的滚动效果
- innerHTML的问题
- 这段代码,有什么错误?
- 求 JAVASCRIPT 代码
- 求一个图片展示组件
- 100分,100分,100分,求JS获取“客户端”的“桌面”位置,高手请进,100分,100分,100分
- javascript 注释会导致出错?
typeof new Boolean(" ") ----- object
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类型
Boolean("")=false
Boolean(" ")=true
但是:
(" " == false)=true
("" == false)=true
(false == false)=true这两种情况不是矛盾吗~
先统一转成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
" "要是转化成0的话那结果也应该是false~
是强制转换成Boolean类型,就要根据Boolean(value)的规则来
我在6楼已经讲明:
false、0、null、 NaN,或者空字符串,则该 Boolean 对象的初始值为 false
否则,为true而" "不是空字符串,所以为true
先统一转成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~~~~
---------------------------
谁告诉你是这个结果的?
alert(Number(""));//0
alert(Number(" "));//0
String转化为boolean~
这样" "先经过trim(我认为)变成""
而""转化为boolean是false
因此才有" " == false
----------------
lz再试试这个通不通了
"0"==false
String转化为boolean
即true==false
那结果应该是false//错误可是事实上是都转换成Number
即0==0
结果应该是true
刚刚得的第5个裤衩
菜鸟一个,呵呵
而且来csdn不久,还请多多照顾啊
parseInt("")--NaN
Number("") --NaN但是,二者的区别仅仅是
parseInt()转化的是第一个非数字之前的部分,Number()转化的是整个串~那么怎么又会出现上面这种情况~~
Number("") -- 0
Number(" ") -- 0
parseInt(" ")-- NaN
parseInt("")-- NaN
Number(" ")的结果是NaN才符合~
new Object()跟" "可不是一回事
" "的类型是String,而不是Object
比如:
alert(Number(new Object()));//NaN
alert(Number(new String()));//0
区别立即显现
Number(" ") -- 0但是为什么:
parseInt(" ")-- NaN
parseInt("")-- NaN两种转化结果怎么可能不同~
如果用着不爽就尽量少用(即避免用)js就是这么规定的呀
Number(new String()) -- 0
parseInt(new String()) -- NaN作为程序员,在弄清楚之后,你可以认为他不合理,但必须遵从
Boolean("")=false
Boolean(" ")=true
但是:
(" " == false)=true
("" == false)=true
(false == false)=true这个才是我的问题的根源~~
两种情况也是不一致的~问题原型就是,
判断一个串是不是等于另一个串的时候,还有没有必要trim~
这才是实用的关键 ~
都是靠的系统自己的转化,那在不同的情况下,我们就会转化得到不一样的结果~
这才是应用中存在的问题~
其实就是一些边缘数据,如""," "之类的~等~但我们往往在判断的时候用到的也就是这些边缘值~因此我才想到了问这些问题~
这也许是大家在应用过程中都忽略的地方~
判断一个串是不是等于另一个串的时候,还有没有必要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
不要想当然(当然,你NB可以自己搞一个语言,规则你自己定)
(" " == false)=true
("" == false)=true
相当于
(Number(" ") == Number(false))=true
(Number("") == Number(false))=truelz要是再不明白,不是你自杀
该自杀的是我
都是靠的系统自己的转化,那在不同的情况下,我们就会转化得到不一样的结果~
这才是应用中存在的问题~
其实就是一些边缘数据,如""," "之类的~等~但我们往往在判断的时候用到的也就是这些边缘值~因此我才想到了问这些问题~
这也许是大家在应用过程中都忽略的地方~
Boolean(" ")=true
但是:
(" " == false)=true
("" == false)=true
(false == false)=true结合以上两种,那你说一下下面的题该怎么判断~
别告诉我就是规定的~
if(document.getElementById("aaa").value){
....
}
其中aaa是一个文本框~
如果我想要的结果中允许是空的字符串,那该怎么实现~请你回答~注意,我允许用户输入空串(" ")~但不允许是空("")
-----------------------------------------------------
看问题不要太肤浅~,不是抓住什么不放,既然存在,就有存在的价值~
等你研究明白这道题再来回答问题~别老是想当然~我明确告诉你我的结果:
它是按照下面规则来验证的~
Boolean("")=false
Boolean(" ")=true
而不是
(" " == false)=true
("" == false)=true
这条规则~~~
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()时:
当什么都不输入,结果是:
**
**
当输入" "时,结果是
* *
* *很简单的验证~
很容易看出不同来吧~
知道这个问题的意义了吧~