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的document.all函数使用示例
Dec 30 Javascript
jquery实现弹出层遮罩效果的简单实例
Mar 03 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
javascript查询字符串参数的方法
Jan 28 Javascript
jQuery+JSON实现AJAX二级联动实例分析
Dec 18 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
jQuery图片加载显示loading效果
Nov 04 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
Typescript3.9 常用新特性一览(推荐)
May 14 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
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
php 将excel导入mysql
2009/11/09 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
jquery手风琴特效插件
2015/02/04 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
angular.js实现购物车功能
2017/10/23 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
JS实现图片切换特效
2019/12/23 Javascript
vue实现放大镜效果
2020/09/17 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Apache如何部署django项目
2017/05/21 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
班组安全员工作职责
2014/02/01 职场文书
岗位职责的构建方法
2014/02/01 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
开学典礼决心书
2014/03/11 职场文书
采购求职信
2014/03/17 职场文书
大学生找工作求职信
2014/07/09 职场文书
《海上日出》教学反思
2016/02/23 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
Python中Selenium对Cookie的操作方法
2021/07/09 Python
Python字符串常规操作小结
2022/04/03 Python