博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重学前端-js的类型问题
阅读量:6988 次
发布时间:2019-06-27

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

JavaScript的语言类型:

  • undeifined
  • boolean
  • string
  • number
  • null
  • symbol
  • object
记住:0.1 + 0.2 != 0.3复制代码
1.undefined
undeifined 是一个变量,而非是一个关键字。而获取他的值,则可以通过void 0 来获得。void 0 == undefined任何变量在赋值前都是undefined。而null是定义了但是为空的状态。复制代码
2.null
null类型只有一个值,就是null,他的语义表示空值。null不同于undefined,null是关键字,所以你可以放心用null关键字来获取null值。复制代码
3.Boolean
Boolean类型会有两个值,true和false。是用来判断逻辑意义上的真假。复制代码
4.String
string用于表示文本数据,string有最大长度:2^53-1.  string的意义并非字符串,而是字符串的UTF16编码复制代码
5.number
number是浮点数,console.log( 0.1+0.2 == 0.3); //false其实。浮点数运算的特点,精度问题复制代码
6.symbol
symbol 是ES6引入的新类型,是一切非字符串的对象key的集合。ES6中整个对象系统被Symbol重塑。创建:(使用全局的symbol函数)var mysymbol = Symbol("my symbol")Symbol.iterator---为每一个对象定义了默认的迭代器,该迭代器可以被for...of循环调用var o = new Object//给对象Object添加iterator属性o[Symbol.iterator] = function() {    var v = 0;    return {        next:function(){            return {value: v++, done: v> 10}        }    }}for(var v of o)  console.log(v)复制代码
7.对象
Object是最复杂的类型,也是js的核心机制之一。对象是属性的集合,属性分为:数据属性和访问器属性,都是KEY-VALUE形式。key可以是字符串或者symbol类型复制代码

类型转换

StringToNumber

NumberToString

装箱转换    是把基本类型转换成为对应的对象。            例子:    symbol对象是无法使用new来调用的,但是我们可以利用装箱机制来得到一个symbol对象。        利用一个函数call来强迫产生装箱。        var symbolObject = ( function () {        return this;    }).call(Symbol("a"))        console.log(symbolObject instanceof Symbol); //true    console.log(typeof symbolObject) // object            或者利用Object函数,在JavaScript代码中显式调用装箱能力        var symbolObject = Object((Symbol('a'));    console.log(Object.ptototype.toString.call(symbolObject)); // [Object Symbol]复制代码
拆箱转换: ToPrimitive函数    是对象类型到基本类型的转化。    对象到String和Number的转换都遵循“先拆箱再转换”。先将对象转为基本类型,再从基本类型转化成String和NUmber        var o = {        valueOf: () => { console.log("valueOf"); return {}}        toString: () => { console.log("toString"); return {}}    }        o*2        //1.先执行valueOf    //2.toString    //3.typeError        o + ""        //1.先执行toString    //2.tvalueOf    //3.typeError        显式toPrimitive Symbol 来覆盖原有的行为        o[Symbol.toPrimitive] = () => {console.log("toPrimitive"); return "hello"}        console,log(o + "")复制代码

js字符串和数字之间的转换

1.转换函数

parseInt("10.5") // 10parseInt("0xA") //10parseFloat("1234blue") // 1234parseFloat("blue") //NaN复制代码

2.强制类型转换

Boolean(value) --- 把给定的值转换成Boolean型Number(value) --- 把给定的值转化为数字(整数或者式浮点数)String(value) -- 把给定的值转为字符串Boolean(100) // trueNumber(false) //0Number(true) //1复制代码

3.利用JS变量弱类型转换

var string = 1 + '12' // 112 stringstring = string - 0 // 112 number复制代码

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

你可能感兴趣的文章
linux bash bc awk 浮点 计算 比较
查看>>
基于socket.io的实时消息推送
查看>>
软件测试主要是做什么?
查看>>
7月第二周搜索引擎网站排名:百度谷歌搜搜前三
查看>>
查询进程并杀死
查看>>
VMXNET3 vs E1000E and E1000
查看>>
7200的GRE(隧道)+ipsec(传输模式+pre-share)配置
查看>>
四、编译安装php-5.5.34
查看>>
Thinkpad X240修改bios引导,U盘安装系统
查看>>
Slave SQL: Relay log read failure: Could not parse relay log event entry.
查看>>
抽取Zabbix的图形整合到自己后台
查看>>
lamp服务器站点目录被植入广告代码
查看>>
如何把海量数据从 Oracle 导入到 Mongodb
查看>>
rsync后台服务
查看>>
awk 比较两个文件的异同
查看>>
Centos7.0下部署Rsync+inotify实时同步
查看>>
通过rsync+inotify实现数据的实时备份
查看>>
我的友情链接
查看>>
Linux输入子系统
查看>>
大数据_JAVA_第二天_进制转化和补码存储方式
查看>>