当前位置: 首页 > 科技观察

JavaScript内置数据类型的两大类

时间:2023-03-14 23:30:04 科技观察

JavaScript数据类型在大方向上分为两大类:1)原始类型和2)对象类型。其中一种基本类型包括常规数字、字符串和布尔值以及特殊类型null和undefined。而以上五类都是不可变类型;其次,对象类型包括对象,以及一种特殊类型的对象,即数组。其他如Set、Map、类型化数组、RegExp和Date类型。1.NumbersNumeric字面量表示十六进制、二进制和八进制://integerliterals>0xff255>0b101111>0o377255>377377//floating-pointliteralsundefined>6.02e236.02e+23>1.47e-231.47e-23//ArithmeticMath.hypo//InfinityInfinity//ApositivenumbertoobigtorepresentNumber.POSITIVE_INFINITY//Samevalue1/0//=>InfinityNumber.MAX_VALUE*2//=>Infinity;overflow-Infinity//AnegativeFINVEITGATOBIGTORESENTNumber//Thesamevalue-1/0//=>-Infinity-Number.MAX_VALUE*2//=>-InfinityNaN//Thenot-a-numbervalueNumber.NaN//相同的值,换一种写法0/0//=>NaNInfinity/Infinity//=>NaNNumber.MIN_VALUE/2//=>0:underflow-Number.MIN_VALUE/2//=>-0:negativezero-1/Infinity//->-0:alsonegative0-0//下面的Number属性定义在ES6Number.parseInt()//同globalparseInt()functionNumber.parseFloat()//同globalparseFloat()functionNumber.isNaN(x)//IsxtheNaNvalue?Number.isFinite(x)//Isxanumberandfinite?Number.isInteger(x)//Isxaninteger?Number.isSafeInteger(x)//Isxaninteger-(2**53)-(2**53-1)Number.MAX_SAFE_INTEGER//=>2**53-1Number.EPSILON//=>2**-52:smallestdifferencebetweennumbers//浮点数18,437,736,874,454,810,627能表示的浮点数只有这么多//roudingproblems//BigInt//Dateandtimelettimestamp=Date.now();//当前时间作为时间戳(anumber).letnow=newDate();//当前时间作为Dateobject.letms=now.getTime();//转换为毫秒时间戳.letiso=now.toISOString();//转换为标准格式的字符串。2.字符串和文本//1.stringliterals//2.escapesequences//3.stringmethods//4.templateliterals(taggedtemplateliterals)//5.PatternMatching/[1-9][0-9]*/;3.布尔值只有真假。四、nullandundefined>typeof(null)'object'五、Symbolslets=Symbol.for("shared");lett=Symbol.for("shared");s===t//=>trues.toString()//=>"Symbol(shared)"Symbol.keyFor(t)//=>"shared"六、全局全局常量,如undefined、Infinity和NaN全局函数,如isNaN()、parseInt()(§3.9.2)和eval()(§4.12)构造函数,如Date()、RegExp()、String()、Object()和Array()(§3.9.2)全局对象,如Math和JSON(§6.8)七、不可变基元和可变对象引用>functionequalArray(a,b){...if(a===b)returntrue;...if(a.length!==b.length)returnfalse;...for(leti=0;i