Skip to content

Latest commit

 

History

History
77 lines (68 loc) · 2.77 KB

2 类型与类型之间的转化.md

File metadata and controls

77 lines (68 loc) · 2.77 KB

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没有自动转换。