前言:
今天对表达式和运算符做总结。
表达式是指能计算出值的任何可用程序单元。
在js中,表达式是一种js短语,可以使js解释器用来产生一个值。
运算符在js里面也是比较基础的一个东西,它一般用于表达式和表达式之间,做一些运算。
表达式
一共有六种:
- 原始表达式
- 初始化表达式
- 函数表达式
- 属性访问表达式
- 调用表达式
- 对象创建表达式
具体的🌰:
原始表达式
- 常量,直接量: 3, “test”
- 关键字: null, this, true, false
- 变量: i, k, j
复合表达式
原始表达式和原始表达式加上一个运算符,就是复合表达式。
数组,对象的初始化表达式
- [1, 2] 等价于 new Array(1, 2)
- {x:1, y:2} 等价于 var o = new Object();o.x=1;o.y=2;
函数表达式
1 | var fe = function() {}; |
匿名函数赋值,函数直接调用,这都是函数表达式。
属性访问表达式
1 | var o = {x:1}; |
访问x的两个表达式就是属性访问表达式。
调用表达式
简单粗暴就是:
1 | funcName(); |
调用一个已经定义的函数。
对象创建表达式
1 | new Func(1, 2); |
调用构造函数,如果不需要传参,那么括号可以省略。
运算符
运算符按照操作数的数量可以分为:
- 一元运算符 比如 +num
- 二元运算符(最常见) 比如 a + b
- 三元运算符 比如 c ? a : b
按照功能分类:
- 赋值运算符 x += 1
- 比较运算符 a == b
- 算术运算符 a + b a - b啥的
- 位运算符 a | b
- 逻辑运算符 exp1 && exp2
- 字符串拼接 “a” + “b”
- 特殊运算符 delete obj.x等等
特殊运算符举🌰
比如:
条件运算符:
1 | c ? a : b; |
val=1。
逗号运算符:
1 | var val = )(1, 2, 3); |
用逗号隔开表示每个表达式都会被计算,最后取最右面的值。
(val=3)。
delete 运算符:
1 | var obj = {x:1}; |
用于删除一个对象里面的属性。
并不是所有的属性都可以被删除
从IE9开始有了一个新方法:
1 | var obj = {}; |
注意这个defineProperty方法啊。
里面的configurable的标签只有是true,属性才可以被删除。
in 运算符
1 | window.x = 1; |
返回true,用于判断一个属性是否存在于一个对象中。
instanceof typeof啥的
在上一篇文章中回顾过了,它们是用来判断类型的。
还是举一些🌰:
1 | {} instanceof Object; //true 基于原型链判断对象的类型 |
new 运算符
1 | function Foo() {}; |
new 根据指定的构造函数生成一个对象,这个对象的原型就是这个构造函数。
this 运算符
在浏览器里面:
1 | this; // 指向window |
this 在不同情况下会有不同的值,这个需要展开讨论,像原型链一样,我会单独写文章。
void 运算符
很少见,一元运算符。
不管后面的操作数是谁,最后都返回undefined。
运算符的优先级
这个从学c语言的时候就开始强调,很杂,我的感觉一个是多写多熟悉,另一个就是实在不行上括号,括号万岁,通俗易懂,省时省力。
上图!
总结
哈哈,写这篇总结,让我有一种回到大一的感觉。
真想念熊老师的c语言课啊啊啊啊啊啊~~~
好!现在去看会儿别的书~~~^_^