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复制代码