`
zhouyrt
  • 浏览: 1172475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

慎用基本类型的包装类

阅读更多

浏览网页无意中看到的,条件判断时强制强其转换成Boolean型。对于JavaScript来说在需要用到Boolean时会动态转换。


var b = new Boolean(false);
if(b){
	alert(5); // 弹出
}
 
当Boolean的参数是false,0,null,undefined时,b将是一个对象,if(b)中的b将为真,后续代码会执行。因此不要这么干。

去掉 new 则是没问题的。

var b = Boolean(false);
if(b){
	alert(5); // 不会弹出
}
 
当然也可以用这种方式方便的实现类型转换,如

var a = Number('22');
typeof a; // number

var b = Boolean('null');
typeof b; // boolean

var c = String(33);
typeof c; // string
 

2
2
分享到:
评论
2 楼 zhouyrt 2010-09-03  
笨笨狗 写道
有new和没有new,行为是不同的(new的话返回包装对象,直接调用返回经过类型转换后的另一个“原始值”),这个在javascript权威指南的API参考部分有详细说明:)


谢谢您的提醒。
1 楼 笨笨狗 2010-09-02  
有new和没有new,行为是不同的(new的话返回包装对象,直接调用返回经过类型转换后的另一个“原始值”),这个在javascript权威指南的API参考部分有详细说明:)

相关推荐

    java开发性能优化

    7. **慎用synchronized**:同步可能导致性能下降,应尽量缩小同步代码块的范围。优先使用同步方法而不是同步代码块,以减少锁竞争。 8. **使用StringBuilder和StringBuffer进行字符串拼接**:相较于"+"操作,这两个...

    Java编程中“为了性能”尽量要做到的一些地方

    基本类型和包装类型在内存中的处理方式不同,基本类型的数据存储在栈中,而包装类型作为对象存储在堆中。因此,对于需要频繁操作的数据,推荐使用基本类型;而对于需要放入集合或其他容器中的数据,则考虑使用包装...

    Java开发手册笔记

    - **原因**:使用包装数据类型(如`Integer`、`Boolean`等)而不是基本数据类型(如`int`、`boolean`等),可以更好地表达业务含义。例如,在`Student`类中定义`score`属性时,如果使用`Integer`而非`int`,则可以...

    必会的40个Java代码优化细节.pdf

    6. **合理使用包装类型和基本类型**:包装类型适合于集合操作,基本类型适用于其他场景,以减少不必要的对象创建。 7. **慎用`synchronized`**:同步可能导致性能下降,尽量缩小同步范围,使用同步方法代替同步代码...

    Java语言编码规范

    - 自动装箱拆箱:Java 5引入了基本类型对应的包装类,它们之间可以自动转换,但要注意可能导致的NullPointerException。 6. **变量声明**: - 尽量减少作用域,变量应在最接近其使用的范围内声明。 - 避免全局...

    注射用胸腺肽说明书.doc

    - **孕妇及哺乳期妇女**:慎用。 - **儿童用药**:文献未明确提及。 - **老年患者用药**:文献未明确提及。 #### 九、药物相互作用 - 文献中尚未明确提及与其他药物的具体相互作用情况。 #### 十、总结 注射...

    Java编程性能优化的技巧

    6. **包装类型与基本类型的使用**:包装类型是对象,存储在堆中,而基本类型在栈中,使用时应根据场景选择。集合类通常需要对象,其他情况下推荐使用基本类型。 7. **慎用synchronized**:同步操作代价高,可能导致...

    深入浅出 SQL (中文版).part1

     慎用DELETE  DELETE不精确的麻烦  以UPDATE改变数据  UPDATE的规则  UPDATE是我们的新INSERT-DELETE  UPDATE在行动  更新小丑的活动  UPDATE定价  只需要一次UPDATE  你的SQL工具包 4 聪明的表设计:为...

    Linux多线程服务端编程:使用muduo C++网络库

    4.7用RAII 包装文件描述符.. . . . . . . . . . . . . . . . . . . . . . . . . . 99 4.8RAII 与fork() . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 101 4.9多线程与fork() . . . . . . . . ...

Global site tag (gtag.js) - Google Analytics