phpStudy
phpStudy
网站首页
软件下载
PHP教程
编程技术
PHP
MySQL
HTML
CSS
JavaScript
MSSQL
AJAX
.NET
JSP
window
Linux
Mac
ASP
服务器
CMS
SQL
jQuery
C#
C++
java
Android
IOS
oracle
MongoDB
PostgreSQL
SQLite
教程手册
php
html
html5
css
css3
JavaScript
ajax
jquery
sql
ado
asp
aspnet
browsers
careers
dhtml
dotnetmobile
dtd
e4x
glossary
hosting
htmldom
json
media
msnet
quality
rdf
rss
schema
semweb
site
sitemap
smil
soap
svg
tags
tcpip
vbscript
w3c
wap
web
webservices
wmlscript
wsdl
xforms
xhtml
xlink
xml
xmldom
xpath
xquery
xsl
xslfo
网站测速
小皮面板
智能dns
搜索
首页
PHP教程
JavaScript类型转换方法及需要注意的问题小结(挺全面)
JavaScript类型转换方法及需要注意的问题小结(挺全面)
一、类型转换的方法和应该注意的问题:
1.
转换为布尔型:
(
1
)用两次非运算
(!):
!!5 ==> true
(
2
)用布尔型的构造函数:
new Boolean(5) == > true
值转换为布尔类型为
false
:
0
,
+0
,
-0
,
NaN
,
""(
空字符串
),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.
三个取整函数的区别
:
(
1
)
Math.ceil():“
天花板
”
,很形象吧?就是取大于等于参数的最小整数。
8.7 == > 9
-8.7==> -8
(
2
)
Math.floor():"
地板
",
取小于等于参数的最小整数。
8.7 ==> 8
-8.7 ==> -9
(
3
)
Math.round():"
四舍五入
"
取整数。
«
»
PHP教程
PHP简介
PHP基本语法
PHP类型
PHP变量
PHP运算符
PHP控制结构
PHP函数
PHP类与对象
PHP异常处理
函数库分类
快速导航
PHP
MySQL
HTML
CSS
JavaScript
MSSQL
AJAX
.NET
JSP
Linux
Mac
ASP
服务器
SQL
jQuery
C#
C++
java
Android
IOS
oracle
MongoDB
SQLite
wamp
交通频道
Copyright © 2016 phpStudy | 豫ICP备2021030365号-3