ES6数值扩展

概述:

1.原始值与引用值

2.基本包装类型

ES将数据划分为原始值和引用值

原始值是单一的数据,如10,”abc“,true(数值,字符串,布尔)

ES设计了6种原始值:Undefined,Null,Boolean,Number,String和Symbol

保存原始值的变量是按值访问,操作存储在变量内存中的实际值

引用值,表示有多个值(原始值或其他引用值)构成的对象

ES不允许直接访问对象的内存空间

实际操作对象,访问的是保存对象的内存地址,及该对象的引用

动态属性

1.原始值是不能改变的

2.引用值(对象)随时可以添加,删除,修改,增加其属性和方法

3.原始值不能有属性

装箱和拆箱,给原始值

值传递的方式:

1.赋值,即将值复制给变量的过程

原始值与引用值传递的区别

一个是传递值,一个传递的是引用

值改变不影响,引用改变会影响

原始值的传递为值传递,

引用的传递是引用

确定类型:通过typeof操作符来判断一个值得类型

null的typeof是,object

数组的typeof也是,object

几乎所有引用值的typeof都是object

console.log(typeof str)

确定类型时,对引用值来说,typeof用处不大

引用值用instanceof判断

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4FLKLnn-1618995990414)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210316110656154.png)]

原始值包装类型

为了方便操作原始值,ES提供了3种特殊类型的引用:Boolean,Number,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eHPooqG0-1618995990422)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210316110903204.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YC7rHmcu-1618995990427)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210316112225424.png)]

valueof可以从引用中取出他的值

三种基本数据类型

数值与Number

Js数值特征

1.不区分整数值与浮点值

2.所有数值均用浮点数表示

3.采用IEEE-754标准定义64位浮点数格式

整数直接量(整数的字面量)

除十进制外,JS能识别十六进制(以0x或0X为前缀),二进制(0b或0B为前缀),八进制(以0o或0O为前缀)

浮点数直接量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cRtKghj-1618995990433)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210316113328034.png)]

6.12*10^5 6.12e5

算术运算

运算符:±*/%**,

**幂运算,从右到左运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1s8TjXWQ-1618995990438)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210316113656487.png)]

溢出(overflow):当数值操作的结果超过JS能表示的数值上限

结果为infinity,若超过负数范围,为-infinity

±infinity,进行±*/运算结果依然是±infinity

下溢:

当运算结果无限接近0,并比JS能表示的最小值还小时,Js返回0,负数下溢时-0

二进制浮点数与四舍五入错误

实数有无数个,但JS通过浮点数的形式只能表达其中有限个数

数值转换

JS里面3个函数可将非数值转换为数值

Number(),parseInt(),parseFloat()

将传进来的数据,转换为字符串在做解析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HTQxkGQm-1618995990441)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318145108507.png)]

parseInt(‘A’,16),告诉他是16进制的A

对应数值

创建一个Number类型的构造函数

let num = new Number(10)

常用方法:

toString(),返回数值对象的字符串表示

如:num.toString();num.toString(2);num.toString(16)

toLocalString(),返回数值对象的字符串本地表示

num.toLocalString

Valueof,返回数值对象的原始数值

如:num.valueOf()

toFixed(n),返回指定小数位数的数值字符串,n表示保留的小数点数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3VfpnXlZ-1618995990443)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318151131439.png)]

toExponential(n),返回科学计数表示的数值字符串

num.toExpontential(n)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofZedyU1-1618995990445)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318151110545.png)]

toPrecision(n),

n表示数值的总位数,不包含指数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fQittB5-1618995990447)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318151037371.png)]

Number.isFinite()检查一个数值是否是有限的,ES6新增在Number上的属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3K1YF9el-1618995990449)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318151345121.png)]

Number.isNaN(),判断里面的数据是否为数值

,可以对里面的false,null转换为数值0

全局的IsNaN和全局的isFinite

和Number的isNaN和isFinite不一样

Number.parseInt和Number。parseFloat

NUmber.isInteger()

判断一个数值是否为整数,如果参数不是数值,返回false

Number.EPSILON

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U2vF0nuf-1618995990450)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318152355047.png)]

Math的常用方法

min()与max()

可以接受任意多个数,只接受数值

let nums=【1,2,4,3,5,6,7,8,8,9】

max = Math.max(…nums);

常用方法

舍入方法:

把小数值舍入整数

Math.cell(), 始终向上舍入最近的整数

Math.floor(),始终向下舍入最近的整数,向左走,不管是负数还是正数

Math.round(),执行四舍五入返回最近的整数

Math.fround(),返回数值最接近的单精度(32位)浮点数表示

random():取一个0-1的随机数

Math.trunc();直接取小数部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-00sGHmrh-1618995990452)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318161731473.png)]

Math.sing

Mth.cnrt():求一个数的立方根

Math.hypot():j

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzrvLx1T-1618995990454)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318161934804.png)]

ES6新增了一个新的数据类型BigInt

BigInt(“10”)

返回10n

布尔值:

取值:true和false

常用于控制结构:

while,if

转换:false,“”(空字符串),null,0,NaN,undefined,都转换为0

字符串:

字符串是一组由16位值组成的不可变的有序序列,每个字符通常来自于Unicode字符集

字符串的长度(length)使其所含16位值的个数

JS采用UTF-16编码的Unicode

字面量:由单引号或双引号括起来的字符序列

单双引号可以嵌套,由最外围引号界定字符串

如:“this is ‘me’”

字符串字面量可以拆分成数行,每行必须以反斜线(\)结束,

且反斜线都不计入字符串的内容

let s =“this is a\

dog”;

console.log(s)

在客户端JS中,要注意与HTML代码混合搭配使用引号

转义字符

()反斜线后面加一个字符,用于表达特殊含义

如**:’ ‘’ \n \r \**

通用转义字符:

通过十六进制数表示Latin-1

字符的Unicode表示法

JS允许采用\u形式表示一个字符

字符串的连接:

+,字符串的连接

let s = “Java”;

s = s+“Script”;

以上代码操作过程

“10”+10

“1010”,原因在有字符串时进行拼接,把任何数据类型转换为字符串,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YuSUOSA-1618995990456)(C:\Users\97950\AppData\Roaming\Typora\typora-user-images\image-20210318171146850.png)]

String()

将其参数转换为字符串,返回字符串原始值

String(100)

let x;String(x)

let x =null;String(x)

String({value:10})

String({value:10,toString:function(){return this.value;}}

字符串对象

length 属性,返回字符串字符个数,即16位

charAT(索引)返回指定索引的字符串

substring(1,5)第一个参数起始索引,第二个为结束索引,但不包括第二个

slice(1,5)

substr(2,3),第一个为开始索引,第二个为截取个数

indexOf(“l”),字符串在字符串中第一次出现的索引

lastIndeOf(“l”),

indexOf(“l”,3),从索引为3从后面数的,l

split,分割字符串

s.split(“,”),根据,切割

replace,替换,原来的没法换,是创了一个新的字符串

Concat(!),连接新的

toUpperCase(),创建一个新的

“ abc ”.trim,去掉字符串两边的空白字符,返回一个新的字符串

你可能感兴趣的:(js)