美文网首页js高级程序设计第三版小记
2019-12-11第三章:类型转换

2019-12-11第三章:类型转换

作者: Lau17 | 来源:发表于2019-12-11 23:31 被阅读0次

        有关12-10的一点小补充:isNaN()同样适用于对象。其处理时会优先调用valueOf方法,确定其返回值是否可以转换为数字,如果不可以,则调用toString()方法,再对返回值进行判断。

可以发现,哪怕是类的嵌套也是可以识别的

    ⑤ 数值转换。用作数值转换的函数共有三个,Number(),ParseInt(),ParseFloat(),三者使用上有很大差别,依次讨论。

    首先是Number():

    Boolean  ->  0或1;

    数字值  ->  传入传出;

    null  ->  0;

    undefined  ->  NaN;

    字符串:只包含数字时,转化为十进制整型,同时自动忽略前位的0('011' - > 11);包含浮点数时,转化为十进制浮点型;包含十六进制格式时,转化为同等大小的10进制整型('0xA' ->  10);为空字符串时,转化为0;如果字符串中包含除以上的任意格式,返回NaN(例如'?!#@%^@');

    Object:转换规则同上文isNaN();

    其次是ParseInt():

    ParseInt在Number的基础有了一些改进,例如:ParseInt在处理字符串时,会自动过滤字符串的前N位空格,直至找到第一个非空字符,如果第一个字符是数字或负号,ParseInt会继续查看下一位字符,依次推进,这样做的效率很高;因此,ParseInt可以从前缀为若干个空字符的串中提取第一个数字字符串,这一点在工程开发中极为实用:

自动过滤空格

    另外parseInt可以指定转化的进制,其第二个参数可以指定N进制,例如( parseInt(10,10) = 10; parseInt(10,2) = 2),另外,在使用parseInt时,如果不指定参数,一定要小心符合8进制或16进制的字符串被转化为对应进制的数字,引发错误。

3.字符串类型

    ① 字符串基础。在js中,字符串可以使用''或""表示。字符串中有一些典型的转义字符,在js中被称为字符字面量(\n,\r,\t,\\ 等等)。字符串的特点是不可变。一旦被创建,那么他对应的值也就唯一确定,如果我们需要更改一个字符串的值,js所使用的方式是先销毁,后填充的方式:

    var str1 = 'hunterMonster'        //创建一个可以容纳12个字符的字符串

    var str2 = ':world'        //创建一个可以容纳5个字符的字符串

    str1 = str1 + str2        //创建一个可以容纳17个字符的字符串,将str1与str2填充,再销毁str1,再将这个新字符串命名为str1

    ② 字符串的强制类型转换。最常用的是toString()方法,他返回除了null和undefined的任何变量的字符串表示(包括字符串本身也可以使用toString()函数,他返回的是字符串的副本(这是一个深拷贝的过程 ->结果是两个字符串地址不同,但值相同),string()与其类似,但string()同样可以处理null和undefined。

toString转万物

4.Object类型

    ① Object基础。ECMAScript中的对象就是数据与功能的集合,这点和大多数语言并无太多差异。可以使用new操作符来声明创建,在创建时,如果不需要传入参数,可以省略()。

二者完全等价

    在这里必须重新强调一个思想:即javascript中,类是一切。而Object是一切类和实例的基础(可以理解为原型或父类),换句话说,Object拥有的方法和属性毫无疑问地存在于每一个对象中。

    下面简单聊聊Object的方法和属性:

        Constructor:构造函数,保存着创建当前目标所使用的函数,对于Object类来说,就是Object()。

        hasOwnProperty(string propertyName):检查当前Object是否有propertyName这个属性。

        isPropertyOf(Object):检查当前传入的Object是不是当前Object的原型。

        proPertyIsEnumerable(propertyName):检查当前Object是否可以使用for-in循环。

        以及toLocaleString(),toString(),valueOf()三个简单方法,不多赘述。

    值得一提的是,区别{}和Object()的区别?查阅了一些资料,发现写的都非常笼统,大多数答案除了对比了a -- {} 和 b -- new Object() 以及c -- var Obj = function() {}; var c = new Obj();三者的变量创建速度(c > a >> b),并没有更深的解释。之前部门在做code-review的时候曾经有针对java讲过不调用构造函数(方法C)的本质是拷贝,在时间上远优于使用构造函数的常规类构造方法,想必在此也是类似的道理。而c>a的原因还不得而知。

    附上一篇参考帖子:https://www.jianshu.com/p/00bc4f105f7e,有空会再回来看看这个问题。

    另外,操作符中的一元操作符比较简单,位操作符更倾向于底层的二进制计算实现,在工程中使用不多,就不多赘述了。明天从44页,布尔操作符开始学习。

相关文章

  • 2019-12-11第三章:类型转换

    有关12-10的一点小补充:isNaN()同样适用于对象。其处理时会优先调用valueOf方法,确定其返回值是否可...

  • C语言类型转换

    类型转换的方式 自动类型转换1.运算转换(规则:会把小类型转换为大类型) 2.赋值转换 强制类型转换格式:(类型)...

  • 引用类型转换

    向上类型转换(自动类型转换),是小类型到大类型的转换向下类型转换(强制类型装换),是大类型到小类型的转换在强制类型...

  • 第三章 JavaScript中的数据间类型的转换

    数据的类型转换分为强制类型转换和非强制类型转换,强制类型转换也可以称为显示转换,非强制类型转换也可以称为隐式转换。...

  • 笔记2018-08-28

    类型转换 自动类型转换运算转换(编译器会自动把小类型转换为大类型) 赋值转换(将等号右边的类型转换为等号左边的类型...

  • 四、SQL函数④(其他函数)

    类型转换 隐式转换:数据库系统自动将字符串类型转换为整数类型显式转换:使用类型转换函数转换。使用类型转换函数不仅可...

  • 4_类型转换

    关键词:类型之间的转换、强制类型转换、隐式类型转换 1. 类型之间的转换 C语言中的数据类型可以进行转换,转换方式...

  • 学习记录

    类型转换as?类型转换,转换成功,返回一个可选类型,转换不成功返回nilas!类型转换,转换失败回报运行错误备注:...

  • 回顾Date.0402(类型转换、运算)

    类型转换 隐式转换 显式转换 转换为Boolean类型:Boolean(xxx) ; !!xxx 数字类型转换为布...

  • JavaScript的强制类型转换

    强制类型转换 将javascript的值从一种类型转换为另一种类型的值——>类型转换隐式类型转换——>强制类型转换...

网友评论

    本文标题:2019-12-11第三章:类型转换

    本文链接:https://www.haomeiwen.com/subject/fmwagctx.html