IT编程技术

天行健,君子以自强不息;地势坤,君子以厚德载物;

JS第三节-表达式和运算符

2021-2-23 博主:Splendor JavaScript笔记

表达式和运算符

1.0 表达式
   表达式在JS中的一个短语,JS解释器会将其计算出一个结果。常量是程序中最简单的一类表达式。变量名也是一种简单的表达式。复杂表达式是由简单表达式组合而成。

1.1 原始表达式
   最简单的表达式是“原始表达式”。原始表达式是表达式的最小单位--它们不再包含其他表达式。JS中的原始表达式包含常量或直接量、关键字和变量。

1.2 对象和数组的初始化表达式
    对象和数组初始化表达式实际上是一个新创建的对象和数组。这些初始化表达式有时称做“对象直接量”和“数组直接量”。
    数组初始化表达式是通过一对方括号和其内由逗号隔开的列表构成的。
[]                                    //一个空数组
[1+3,2+5,3]                           //拥有三个元素的数组
var arrB=[[1,2,3],[2,4,6],[1,6,4]]    //一个表达式嵌套的数组
var arrC=[1,,,,3]                     //数组直接量中的列表逗号之间的元素可以省略,省略的空位会填充值undefined
    对象初始化表达式和数组初始化表达式类似。
var p={ x:2.3,y:2.1};             //一个有两个属性成员的对象
var q={};                         //一个空对象
q.x=22;q.y=45;                    //添加q对象的属性并初始化值
var objD={ upperLeft:{x:4,y:2},lowerRight:{x:5,y:1}}; //建立一个嵌套对象
1.3 函数定义表达式
     函数定义表达式定义一个JS函数。表达式的值是这个新定义的函数。函数定义表达式可称为“函数直接量”。一个典型的函数定义表达式包含关键字function,跟随其后的是一对圆括号,括号内是一个以逗号分割的参数列表,参数列表可以有0个或多个标识符(参数名),然后再跟随一个由花括号包裹的JS代码段(函数体)
var fun=function(y){return y+y};     //函数返回参数相加后的结果
1.4 属性访问表达式
      属性访问表达式运算得到一个对象属性或一个数组元素的值。JS属性访问定义了两种语法:     
var o={x:1,y:2};     //定义一个对象
o.x                  //第一种点(.)访问
o["x"]               //第二种方括号[]访问
1.5 调用表达式
      JS中调用表达式是一种调用(或者执行)函数或方法的语法表示。
f(0)                 //f是一个函数表达式;0是一个参数
Math.max(x,y,k)     //Math.max是一个函数。x,y,k是参数
a.sort()            //a.sort是一个函数,它没有参数
1.6 对象创建表达式
      对象创建表达式创建一个对象并调用一个函数(这个函数称做构造函数)初始化新对象的属性。在对象创建表达式之前多了一个关键字new
new Object()
new Point(3,5)
      如果一个对象创建表达式不需要传入任何参数给构造函数的话,那么这对空圆括号是可以省略掉的
new Object
new Date
1.7 运算符概述
     JS中的运算符用于算术表达式、比较表达式、逻辑表达式、赋值表达式等。
运算符 描述 实例
20 ( ) 表达式分组 (3 + 4)
       
19 . 成员 person.name
19 [] 成员 person["name"]
19 () 函数调用 myFunction()
19 new 创建 new Date()
       
17 ++ 后缀递增 i++
17 -- 后缀递减 i--
       
16 ++ 前缀递增 ++i
16 -- 前缀递减 --i
16 ! 逻辑否 !(x==y)
16 typeof 类型 typeof x
       
15 ** 求幂 (ES7) 10 ** 2
       
14 * 10 * 5
14 / 10 / 5
14 % 模数除法 10 % 5
       
13 + 10 + 5
13 - 10 - 5
       
12 << 左位移 x << 2
12 >> 右位移 x >> 2
12 >>> 右位移(无符号) x >>> 2
       
11 < 小于 x < y
11 <= 小于或等于 x <= y
11 > 大于 x > y
11 >= 大于或等于 x >= y
11 in 对象中的属性 "PI" in Math
11 instanceof 对象的实例 instanceof Array
       
10 == 相等 x == y
10 === 严格相等 x === y
10 != 不相等 x != y
10 !== 严格不相等 x !== y
       
9 & 按位与 x & y
8 ^ 按位 XOR x ^ y
7 | 按位或 x | y
6 && 逻辑与 x && y
5 || 逻辑否 x || y
4 ? : 条件 ? "Yes" : "No"
       
3 = 赋值 x = y
3 += 赋值 x += y
3 -= 赋值 x -= y
3 *= 赋值 x *= y
3 %= 赋值 x %= y
3 <<= 赋值 x <<= y
3 >>= 赋值 x >>= y
3 >>>= 赋值 x >>>= y
3 &= 赋值 x &= y
3 ^= 赋值 x ^= y
3 |= 赋值 x |= y
       
2 yield 暂停函数 yield x
1 , 逗号 7 , 8

1.8 操作数的个数
      运算符可以根据其操作数的个数进行分类。
  • 一元运算符       操作数为1个       如:-
  • 二元运算符       操作数为2个       如:*
  • 三元运算符       操作数为3个       如:?:
1.9 操作数类型和结果
     一些运算符可以作用于任何数据类型,但仍然希望它们的操作数是指定类型的数据,并且大多数运算符返回(或计算出)一个特定类型的值。

2.0 运算符的副作用
    计算工一个简单的表达式(比如2*3)不会对程序的运行状态造成任何影响,程序后续执行的计算也不会受到该计算的影响,但有些表达式则具有很多副作用,前后表达式运算会相互影响。例如:给一个变量或属性赋值,那么使用这个变量或属性的表达式的值都会发生改变。“++”和“--”也类似它们包含隐式赋值。delete运算符也同样,删除一个属性就像给这个属性赋值undefined。

2.1 运算符优先级
    运算符优先级控制着运算符的执行顺序。优先级高 的运算符的执行总是先于优先级低的运算符。

2.2 相等和不等运算符
    “==”和“===”运算符用于比较两个值是否相等,但它们对相等的定义不尽相同。两个运算符允许任意类型的操作数,操作数相等则返回true,否则返回false。
    “==”运算符称作相等运算符,用来检测两个操作数是否相等,这里的“相等”的定义非常宽松,可以允许进行类型转换。
    “===”运算符称为严格相等运算符,它用来检测两个操作数是否严格相等。
     “!="和”!=="运算符的检测规则是“==”和“===”运算符的求反。
 

标签: JavaScript笔记