JavaScript类型转换方法及需要注意的问题小结(挺全面)


Posted in Javascript onNovember 11, 2010

一、类型转换的方法和应该注意的问题:
1.
转换为布尔型:
1)用两次非运算(!):
!!5 ==> true
2)用布尔型的构造函数:
new Boolean(5) == > true
值转换为布尔类型为false
0
+0-0NaN""(空字符串),undefined,null
除上面的值其他值在转换以后为true,需要特别提到的是:
"0",new Object(),function(){}
2.
转换为字符串类型:
1)加上空字符串""
123 +
 "" = "123"
2)用字符串构造函数:
new String(123) = "123".
需要特别注意的转化:
+0 ==> "0"
-0 ==> "0"
-Infinity ==>"-Infinity"
+Infinity ==>"+Infinity"
NaN ==> "NaN"
undefined ==> "undefined"
null ==> "null"
new Object() ==> "[object Object]"
function(){} ==> "function(){}"
3.
转换为数值型:
1 取正(+), 减零 -0), 乘一,(*1),除以一(/1),取负(-,这个得到相反的值)。
+"123" = 123
+true = 1
2)用构造函数Number();
new Number("123") = 123
几个需要特别注意的转化:
""
(空字符串) ==> 0
"010" ==> 10
"0x10"(16
进制) ==> 16
"-010" ==> -10
"-0x10" ==> NaN
undefined ==> NaN
null ==> 0
true ==> 1
false ==> 0
new Object() ==> NaN
new function(){} ==> NaN

二、隐式类型转换:
(1)
二元加法运算(+):如果两个操作数中有一个是String类型,将把两个操作数转换为String类型再相加。
如果两个操作数中没有字符串类型,那么将把两个操作数转换为数值类型再做运算。
举例:
"123"+123 = "123123";
123+123 = 246
true + true = 2
true + undefined = NaN
(因为undefined转换为数值为NaN,所有结果为NaN)
true + null = 1 (null
转换为数字是0)
"123" + null = "123null" (
包含字符串将转化为字符串相加)
"123" + undefined = "123undefined"
undefined同样适用)
1 + 2 + "123" = "3123" (1+2
是首先按照数值型计算的)
(2)
二元减乘除运算(-*/):因为只有数值类型才有 - * / 运算,所以会先将两个操作数转换为数值型再做运算。
"123"-123 = 0
(3)
一元取正(+),取负运算符(-):取正或者取负都是针对数值型的运算,所以会将操作数转换为数值型再做运算。
+"123" = 123
-"123" = -123
+"123e" = NaN
+"123f" = NaN
+"123e-2" = 1.23 
(4)
一元非(!)运算符:非运算符需要将操作数转化为布尔类型。
!"123" = false
!!"123" = true
!123 = false
!!123 = true
(5)
逻辑运算符(&&)和(||):
&&或者||的两侧被判断的时候会被转为布尔类型进行判断,
但是我在测试的时候却发现一个有趣的事情。
&&
运算符:如果有一个项为false,那么表达式返回false,如果所有的项都不为false,那么表达式返回最右边一个项的原始值。
举例:
123 && 23 && 45
返回 45,而不是我们想象中的true.
所以如果有 123 && 23 == true 那么应该是false
至于if(123 && 23) 认为是true那应该是把23转换为布尔类型了。
||
运算符:
|| 测试的结果也和我想象的不一样,|| 返回第一个转换以后不为false的值,如果都为false,它将返回最后一个为false的值(未进行类型转化之前的值)。
举例: 
123 || 23
返回 123,而不是想象中的true.
false || null
返回null 而不是想象中的false
三、类型转换函数
1.
parseFloat转换为浮点数:
字符解析函数获取每一个字符直到遇到不属于数值的字符,然后返回它已获取的数值.
几个需要特别注意的:
""
(空字符串) ==> NaN
"123e-2" == > 1.23 (
科学计算法是可以识别的)
"010" ==> 10 (8
进制不能识别)
"0x10"==> 0 (16
进制不识别)
"-010" ==> -10 
null,undefined,true,false,new Object(),function(){} ==> NaN
2.parseInt
转换为有符号整数:
parseFloat相似,但是他会把小数位舍掉(注意不是四舍五入,是完全舍弃,跟Math.floor处理方式一样),而且他可以识别八进制和16进制表示方式:
123e-2 == > 1
"123e-2" ==> 123
"010" == > 8 
"0x10" ==> 16
"-010" == > -8 
"-0x10" ==> -16
null,undefined,true,false,new Object(),function(){},-Infinity +Infinity NaN ==> NaN
3.
三个取整函数的区别
1Math.ceil():“天花板,很形象吧?就是取大于等于参数的最小整数。
8.7 == > 9
-8.7==> -8
2Math.floor():"地板",取小于等于参数的最小整数。
8.7 ==> 8
-8.7 ==> -9
3Math.round():"四舍五入"取整数。

Javascript 相关文章推荐
把JS与CSS写在同一个文件里的书写方法
Jun 02 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
javascript 实现键盘上下左右功能的小例子
Sep 15 Javascript
利用jq让你的div居中的好方法分享
Nov 21 Javascript
Javascript调用函数方法的几种方式介绍
Mar 20 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
May 09 Javascript
js实时监控文本框输入字数的实例代码
Jan 18 Javascript
微信小程序实现手势图案锁屏功能
Jan 30 Javascript
vue路由跳转传参数的方法
May 06 Javascript
解决vue中el-tab-pane切换的问题
Jul 19 Javascript
JS sort排序详细使用方法示例解析
Sep 27 Javascript
javascript正则表达式中参数g(全局)的作用
Nov 11 #Javascript
工作中常用到的JS表单验证代码(包括例子)
Nov 11 #Javascript
CSS和JS标签style属性对照表(方便js开发的朋友)
Nov 11 #Javascript
使用jquery与图片美化checkbox和radio控件的代码(打包下载)
Nov 11 #Javascript
关于firefox的ElementTraversal 接口 使用说明
Nov 11 #Javascript
将string解析为json的几种方式小结
Nov 11 #Javascript
js读取本地excel文档数据的代码
Nov 11 #Javascript
You might like
星际争霸任务指南——虫族
2020/03/04 星际争霸
十天学会php之第十天
2006/10/09 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
用js做一个小游戏平台 (一)
2009/12/29 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
再谈JavaScript线程
2015/07/10 Javascript
JavaScript开发Chrome浏览器扩展程序UI的教程
2016/05/16 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
[01:14]英雄,所敬略同——2018完美盛典宣传视频
2018/12/05 DOTA
Python实现从URL地址提取文件名的方法
2015/05/15 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
Django用户身份验证完成示例代码
2020/04/03 Python
详解Python IO编程
2020/07/24 Python
python 监控logcat关键字功能
2020/09/04 Python
python爬取招聘要求等信息实例
2020/11/20 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
技校生自我鉴定
2013/12/08 职场文书
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
就业协议书范本
2014/04/11 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
保证金退回承诺函格式
2015/01/21 职场文书
教师节老师寄语
2015/05/28 职场文书
企业法人代表证明书
2015/06/18 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书