博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你不知道的JavaScript(二)
阅读量:5952 次
发布时间:2019-06-19

本文共 1101 字,大约阅读时间需要 3 分钟。

第三章 原生函数

JS有很多原生函数,为基本的数据类型值提供了封装对象,String,Number,Boolean等。我们可以通过{}.call.toString()来查看所有typeof返回object的对象的内置属性[[class]],这个属性无法直接访问。我们基本类型调用的方法和属性都是通过封装对象去访问的,例如var a = “abc”; a.length//3,但是有一点需要注意的是new Boolean(false)//true,为false封装对象时,它是一个真值(即总是返回true),平时在用到封装对象中的基本类型值的时候,JS会发生隐式拆封。

第四章 强制类型转换

强制类型转换是JS里难以掌握的,但是在实际应用中它又是很有用处的,我们十分有必要去深入理解和合理运用它。类型转换有显式和隐式之分,后者就是强制类型转换,例如var a = 42; var b = a + “”;//“42”,这里数字a被转换为了字符串b。

非字符串转换为字符串,在没有自行定义的情况下,普通对象调用toString方法返回内部的[[Class]]值,JSON.Stringfy函数在将对象序列化为字符串时,如果定义了toJSON方法就会首先调用该方法,用返回值进行序列化,在数组中如果遇到undefined,空function,那么会在对应位置返回null以保证单元位置不变。

在将非数字值转换为数字时就会进行ToNumber操作,false转换为0,true转换为1,undefined转换为NaN,null转换为0,对于对象来说,会首先调用valueOf,没有就调用toString来返回基本类型,然后再强制转换为数字值,如果均不返回数字,则会报错。 转换为布尔值时,从逻辑上说,出现在假值列表上的才为假值,+0,-0,infinite,null,undefined,””,NaN等,要特别注意的是这些假值封装的对象是真值(所有对象都是真值),除了””以外的字符串也都是真值。

~这个符号能有奇妙的功能,~X可以视为-(X+1)。通常用+X来把X转换为数字,用X+””来将X转换为字符串,用X|0来将X取整。

对于+运算符,先是调用toString进行字符串拼接,如果不行就用valueOf转换为数字,进行加法操作。

对于比较运算,数字和字符串比较先转化为数字,如果有布尔类型就将布尔类型转换为数字,字符串或数字和对象比较,先把对象用toString,valueOf转换为字符串或者数字。

转载于:https://juejin.im/post/5aa800626fb9a028d375166d

你可能感兴趣的文章
利用POI 技术动态替换word模板内容
查看>>
基于 Android NDK 的学习之旅-----资源释放
查看>>
大数据之Oozie——源码分析(一)程序入口
查看>>
SpringMVC工作原理
查看>>
浅谈ThreadPool 线程池
查看>>
Mybatis传多个参数(三种解决方案)
查看>>
c3p0三种配置方式(automaticTestTable)
查看>>
VS一直停留在“正在还原nuget程序包”
查看>>
HTTP1.1中CHUNKED编码解析
查看>>
对字符串进行加密解密
查看>>
jmx相关资料
查看>>
eclipse 打包 apk 文件
查看>>
BZOJ 1180: [CROATIAN2009]OTOCI [LCT]
查看>>
doT.js灵活运用之嵌入使用
查看>>
CentOS7--Firewalld防火墙
查看>>
Atom 编辑器系列视频课程
查看>>
C#三种定时器
查看>>
范数 L1 L2
查看>>
协同过滤及大数据处理
查看>>
Java8 本地DateTime API
查看>>