文章目录
前言
主要介绍表达式与操纵符中常用的重要知识点
一、表达式
- 表达式即:可以被求值并产生一个值的JavaScript短语
- 主表达式即独立的,最简单的表达式。例如一个变量一个常量都是
x
,3.14
,y
都是。主要包括字面值,关键字和变量引用
二、对象和数组初始化程序
- 数组字面量可以通过逗号包含未定义的元素,就是数组元素可以通过逗号不赋值
var arr = [1,,,,3];
- 对象与数组的规则相同
三、属性访问表达式
- 属性访问表达式访问对象的属性和数组的元素,由两种方式
.
操作符和[]
操作符 []
注意:当参数为字符串时访问的是这个属性名为这个字符串的属性["name"]
,参数不是字符串,为变量时访问的是变量中保存的属性[name]
,假设name的值为jack,那访问的就是对象中属性名为jack的属性
四、条件式属性访问和条件式函数调用
- 怎么防止发生空指针异常,就JavaScript中的属性访问错误
TypeError
(ES2020新增)
可以加一个
?.
,例如obj?.name,obj?[name]
如果对象为空不会报错,但结果是undefined,函数的调用也可以这么使用,语法一样fun?.()
- 使用
?.
只检查是否为null和undefined,不检查右边的是否存在。左边为空或者未定义。则短路,表达式返回undefined
五、操作符
in
,左侧是字符串(或者可以转成字符串),右侧是对象,左侧是右侧的属性名返回true
,用in也可以测试是否有某个方法instanceof
操作符与Java
一致,但是它是在原型链上找&&
在操作数是真性值或者假性值的时候,在哪里短路就返回哪个值("str" && "s" && null)
,返回null,因为在null短路()||
与&&
一样,操作数为真性值或者假性值时,在哪里短路就返回哪个值??
操作符
a ?? b 等价 (a !== null && a!== undefined)? a : b
delete
操作符删除数组元素不会改变数组长度,删除对象属性则是直接删除
六、数据类型的转换
1.转成String
- 可用
String()
函数的形式转换,适用范围广。底层用的toString()
- 可用
toString()
方法转换,但是null,undefined
没有这个方法
2.转成Number(方法一)
使用Number()
函数
- Stirng转Number
(1)如果字符串式纯数字,则转成Number类型的数字
(2)如果字符串非纯数字,则转成NaN
(3)空串或者空格转换成0
- Boolean转Number
true转1,false转0
- Null转成Number结果为0
- undefined转成Number结果为NaN
3.转成Number(方法二)
作用:从混合字符串中提取数字,比如128px
parseInt(),parseFloat()
,注意这种提取方式提取规则是:遇到非数字的字符串停止,如果第一个字符串就是非数字,那么转为NaN- 其他类型不建议使用这种方法,它实际上是先转成了String再使用的
parseInt()
4.转成Boolean
- Number转Boolean:除了0和NaN是false,其他都是true
- String转Boolean:除了空串是false都是true
- Null,Undefined转Boolan:false
- Object转Boolean:true
补充
- 当出现独立的关键字是JavaScript会假设它是全局对象属性去查询它的值,如果没有,报错
- 一元操作符会将数据转换成数值类型。
+,-,++,--