1.原始值与引用值
2.基本包装类型
ES将数据划分为原始值和引用值
ES设计了6种原始值:Undefined,Null,Boolean,Number,String和Symbol
保存原始值的变量是按值访问,操作存储在变量内存中的实际值
ES不允许直接访问对象的内存空间
实际操作对象,访问的是保存对象的内存地址,及该对象的引用
1.原始值是不能改变的
2.引用值(对象)随时可以添加,删除,修改,增加其属性和方法
3.原始值不能有属性
装箱和拆箱,给原始值
值传递的方式:
1.赋值,即将值复制给变量的过程
原始值与引用值传递的区别
一个是传递值,一个传递的是引用
值改变不影响,引用改变会影响
原始值的传递为值传递,
引用的传递是引用
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)]
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,去掉字符串两边的空白字符,返回一个新的字符串