您的位置:首页 > 其它

数据类型---数据类型转换、隐式类型转换

2016-03-02 23:15 1161 查看
数据类型的转换***

javascript 本身是一种弱类语言,

#c/c++/java 强类型语言

#javascript 弱类型语言

#生活

特点:

1:声明变量,不用提前指定数据类型

var i;

2:同一个变量,先后使用可以保存不同类型数据

var i = 10;

i = "abc";

i = true;

console.log(i);

3:javascript会根据需要,自动转换数据类型

数据类型转换二种

1:隐式类型转换

不需要程序员干预,js自动完成类型转换

算数运算自动转换.

#booealn

true --> 1

false--> 0

#+ 二种含义,如果运算符二侧数字 + 相加

如果运算符二侧有一个是字符串

+ 拼接运算

"abc"+"kkk" //"abckkk"

#false--->0

#null---->0

2:显示类型转换[强制]

程序员通过调用函数完成类型转换

2.1:任意类型 --》字符串

a:x.toString();

b:String(x);-->比上面更通用

#js有一个函数 typeof(x) 返回变量类型

#x.toString()

#如果数据是 null 报错

#undefiend 报错

#String() 以上几种类型转换成功

-------------------------------------------------

1. ***数据类型转换:

强制转换:

转string: var str=x.toString();

//x不能是null和undefined

var str=String(x); 万能

//相当于隐式转换

转number:

1. 任意类型 to number:

var num=Number(x);

//相当于隐式转换

//如果x是纯数字组成或可被隐式转为数字,则返回一个number的数值

//如果x不是纯数字组成或不可被隐式转为数字,则返回NaN。

什么是NaN:Not a number 无效的数字

typeof(NaN): number

2. string to number:

var num=parseInt(str);

执行原理:从str的开始位置,依次读取每个字符

跳过开头的空白字符

仅读取数字字符

碰到第一个不是数字的字符,就退出

不认识小数点

比如: var width="12px";

width=parseFloat(width);//12

width=width+5;//17

width=width+"px";//17px;

parseInt vs Number:

Number只能转纯数字的字符串,但却可转bool类型

比如: Number("12px") -> NaN

Number(true) -> 1

Number("12.5") -> 12.5

parseInt可启动去除数字后的非数字字符

但不能转换boolean类型

比如: parseInt("12px") -> 12

parseInt(true) -> NaN

parseInt("12.5") -> 12

parseFloat(str): 用法和parseInt完全相同

认识第一个小数点

parseFloat("12.5px") -> 12.5

parseFloat("12.5.5") -> 12.5

parseFloat("12.0") -> 12

总结: 何时使用

Number(x): 一般在隐式转换时,自动调用

parseInt/Float: 将字符串转为数字时,最好用parseXXX。

parseInt: 确定需要去掉小数部分时才用

parseFloat: 如果没有明确要求去掉小数部分,最好用parseFloat

转bool : Boolean(x);//相当于隐式转换

***只有x是"",0,NaN,null,undefined,false 时,才转为false

其余全都转为true

隐式转换:

2.2 任意类型转换成->数字

Number(); 强制转换任意类型-》数值

parseInt(); 强制转换字符串类型->数值[整值]

parseFloat(); ..... [小数.浮点]

Number(); 转换严格

Number("");-->0

Number(true);-->1

Number(false);-->0

Number(null);--->0

Number("123");--->123

Number("12ab");-->NaN {not a number}不是一个数字

#parseInt

#字符串转数字

#从左向右依次分析每个字符,如果碰到第一个

非数字字符退出.

不识别小数点,小数点后内容省略

"123.90abc"

->[123]

#parseFloat

#字符串转数字

#功能同上,识点小数点保留小数点后数值

exam:

1:创建变量 保存值 true

2:转换整型数

3:创建变量 保存值 "123kk"

4:转换整型数

5:创建变量 保存值 "99.99#"

6:转换浮点数

小结:

Number 转换范围广{null/true/false/"1a3"}

parseInt 将字符串转数值

parseFloat

面试题:

Number() vs parseInt();

1:以上二个函数功能相似,都是将其它类型转换

数值

2:不同点

Number() 转换范围

parseInt() 字符串 转换整型数值

"99px"--->99

2.3:任意类型--->布尔 boolean

Boolean();0 null undefined "" NaN

以上5种转换false其它都会转换 true

小结:

强制类型转换

1:任意类型转字符串

d.toString();[null,undefiend 报错]

String()

2:任意类型转数值

Number(); 范围广

parseInt(); 字符串转数值

parseFloat();

3:任意类型转布尔

Boolean(); 0 "" undefined null NaN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: