谁动了我的代码

抽象即是空,空即是抽象。
posts(43) comments(24) trackbacks(0)
  • BlogJava
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

News

所有文章版权归我所有,转载请注明出处,谢谢!

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • Android开发(5)
  • C/C++(1)
  • DataBase(3)
  • Java(16)
  • JavaScript(14)
  • WEB前端(1)
  • 编程杂项(2)
  • 网络(1)

随笔档案

  • 2016年5月 (1)
  • 2011年2月 (1)
  • 2010年6月 (3)
  • 2010年5月 (1)
  • 2009年12月 (2)
  • 2009年11月 (1)
  • 2009年10月 (2)
  • 2009年6月 (2)
  • 2009年5月 (1)
  • 2009年4月 (2)
  • 2009年3月 (4)
  • 2009年2月 (1)
  • 2009年1月 (1)
  • 2008年12月 (1)
  • 2008年11月 (1)
  • 2008年10月 (4)
  • 2008年9月 (2)
  • 2008年5月 (5)
  • 2008年3月 (3)
  • 2007年12月 (2)
  • 2007年10月 (1)
  • 2007年9月 (2)
  • 2007年5月 (1)

搜索

  •  

最新评论

  • 1. re: Android之ImageView载入网络上的图片
  • 222222222222222222222
  • --2222222222222222222222222222
  • 2. re: Log4j自带Log Viewer的用法
  • 执行你的根本不行,乱错帖子就在这乱贴,tmd
  • --asdf
  • 3. re: Android之使用私有存储
  • getDir方法创建的文件,会有个app_前缀,请问这怎么去掉呢?
  • --就是宝宝
  • 4. re: Android通用事件造成的生命周期变化情况
  • 我相信以后Android将成为越来越多设备的OS,不光是手持上网设置,冰箱、洗衣机都有可能采用Android。
  • --淘宝网女装春装新款
  • 5. re: Android通用事件造成的生命周期变化情况
  • 不错
  • --歌瑞尔内衣

阅读排行榜

评论排行榜

View Post

JavaScript 类型转换注意事项

注:部分摘自《JavaScript: The Definitive Guide, 5th Edition》

字符型转换为数值型可以使用下列方法
parseInt(stringVar);     //parseInt还可以指定二进制、八进制、或16进制
parseFloat(stringVar);
Number(stringVar);

for example:
parseInt("ff")    //will throw a error
parseInt("ff", 16) == parseInt("0xff")     // return 255
parseInt("77")    //return 77
parseInt("077") == parseInt("77", 8)    // return 63
注:加"0"或"0x"前缀会自动检测并转换为相应的数制所表示的值
If parseInt( ) or parseFloat( ) cannot convert the specified string to a number, it returns NaN


数值型转换为字符型
numberVar + "";
numberVar.toString();   //可以指定二进制、八进制、或16进制
String(numberVar);

other useful method
var n = 123456.789;
n.toFixed(0); // "123457"
n.toFixed(2); // "123456.79"
n.toExponential(1); // "1.2e+5"
n.toExponential(3); // "1.235e+5"
n.toPrecision(4); // "1.235e+5"
n.toPrecision(7); // "123456.8"

其实还有一种方法就是使用new操作符,如
new String(numberVar);
new Numer(stringVar);
但是这种方法返回的结果是object类型,而不是原始数据类型,大家可以酌情使用。

另外,在相等判断时使用' == '会自动转型(具体转换情况请参考其他资料),如果想精确判断请使用' === '。
如   1 == '1'    //return true
       1 === '1' //return false
       1 == new Number(1)   //return true
       1 === new Number(1)   //return false

数值连接等相关操作
"21" + "2" == "21" + 2  //return 212
2 + "21"   //return 221
"21" * "2" == "21" * 2 == 2 * "21"  //return 42
"21" / "3" == "21" / 3 == 21 / "3"  //return 7
"21" - "2" == "21" - 2  == 21 - "2" == 21 - "    2    "  //return 19

正如和Java中一样,new Number(3) == new Number(3)返回false,同理推广到其他类型,new操作符总是建立一个新对象,
而==只是比较其引用,并不比较对象本身,所以两个new的对象的引用总是不同的。所以在通常的逻辑判断中(如if或while等),
最好避免使用Primitive Datatype Wrapper,而直接使用Primitive Datatype。

From Wrapper to Primitive, for example:
new Number(3).valueOf()
new String("str").valueOf()
new Date().valueOf()        //convert a Date to millisecond representation
[any other object].valueOf()    //The primitive value associated with the object, if any. If there is no value associated with object, returns the object itself.

Finally, note that any number, string, or boolean value can be converted to its corresponding wrapper object with the Object( ) function:

var number_wrapper = Object(3);



Automatic datatype conversions

Value

Context in which value is used


String

Number

Boolean

Object

Undefined value

"undefined"

NaN

false

Error

null

"null"

0

false

Error

Nonempty string

As is

Numeric value of string or NaN

TRue

String object

Empty string

As is

0

false

String object

0

"0"

As is

false

Number object

NaN

"NaN"

As is

false

Number object

Infinity

"Infinity"

As is

true

Number object

Negative infinity

"-Infinity"

As is

TRue

Number object

Any other number

String value of number

As is

true

Number object

true

"true"

1

As is

Boolean object

false

"false"

0

As is

Boolean object

Object

toString( )

valueOf( ), toString( ), or NaN

true

As is


利用上面的表,我们可以知道if ("") 、if (0)、if (undefined)、if (null)、if (NaN),这些if语句的条件都为false.



posted on 2008-11-14 09:32 Eric Song 阅读(1990) 评论(1)  编辑  收藏 所属分类: JavaScript

View Comments

# re: JavaScript 类型转换注意事项  回复  更多评论   
和JAVA中几乎一样。。。呵呵。。
2008-11-18 22:00 | Flyever,Zhang
新用户注册  刷新评论列表  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问   管理
相关文章:
  • 关于样式表对象style与currentStyle的区别
  • 关于JavaScript的cloneNode方法对于节点上的事件clone问题的研究。
  • 参考Prototype的Class.create写了一个类似的实现,但是不是Ruby like OOP,使用上更像Java。
  • 对JavaScript的变量作用域的理解
  • IE document compatMode
  • JavaScript对form及form中的引用。
  • JavaScript注意事项(不定期更新)
  • 在定义一个js类的时候,为什么要设置该类的prototype属性为它所要继承的类的实例对象
  • JavaScript 类型转换注意事项
  • 面向对象的JavaScript(二,TSS上的一篇文章,先借鉴一下)
 
 
Powered by:
BlogJava
Copyright © Eric Song