title: 类型转化 speaker: lizhiyuan url: theme:colors transition: rollIn files:/css/style.css,/js/demo.js,/js/highlight/styles/monnokai_sublime.css
[slide]
[slide] {:.flexbox.vleft}
//所有类型转number
var box = 0 / 0;
var box = 12 / 0;
var box = 0 / 12;
var box = 12 / 0 * 0;
alert(box);
//NaN是一个特殊的数字,没有意义,任何与NaN的运算结果都为NaN
var result = NaN == NaN;
alert(result);
//转字符串string类型
var result = Number('0');
//转布尔类型boolean类型
var result = Number(true);//1
var result = Number(false);//0
alert(result);
//所有类型转string类型
//string类型字符串类型
var box = 10;
//将number类型转化为字符串类型
alert(typeof box.toString());
alert(typeof String(box));
var bool = false;
alert(typeof String(bool));
//所有类型转boolean类型
var str1 = '我是字符串';
var str2 = '';
var num1 = 20;
var num2 = 0;
//空的字符串,数值0,null,undefined 都是假,其它所有都为真
alert(Boolean(str1));//为真
alert(Boolean(str2));//为假
alert(Boolean(num1));//为真
alert(Boolean(num2));//为假
[slide] {:.flexbox.vleft}
###1.算数运算 加减乘除模(取余) 如果在算数运算的值不是数值,那么JS将会使用number()转型函数将其转换为数值,属于隐式转换 基本所有的隐式类型转化都发生在运算符中
[slide] {:.flexbox.vleft}
###2.关系运算
- 两个操作数都是数值,则数值比较
3>2
- 两个操作数,都是字符串,则比较两个字符串对应的ASC编码值
‘2’>‘4’
- 两个操作数,有一个是数值,则将另外一个转换为数值,再进行数值比较
‘2’>4
- 两个操作数,有一个是对象,则先调用valueof()或者toString()方法,在用结果比较
1<对象
[slide] {:.flexbox.vleft} ##发生在运算中的隐式转化 ###3.特殊类型之间的比较
- 特殊类型的比较:boolean的true转化为1,false转化为0
- 字符串+数字 = 字符串
- 如果跟NaN进行运算,始终结果都是NaN,等于或者不等于返回false,true .并且NaN和自身不等全等和全不等的判断上,值和类型都相等,才会返回true,否则返回flase
- 如果两个都是对象,则比较它们是否是同一对象,如果指向同一对象,则返回true,否则返回false.Undefined == 0结果不成立,false
- Null == 0 //结果不成立,false
- null会自动转换为0,undefined 自动转化为NaN,但在比较运算中,null和undefined没有自动转换。