JavaScript高级程序设计(第4版)读书分享笔记记录
适用于刚入门前端的同志
目录
操作符
可用于操作数据值的操作符
,包括数学操作符(如加、减)、位操作符、关系操作符和相等操作符等。ECMAScript
中的操作符是独特的,因为它们可用于各种值,包括字符串、数值、布尔值,甚至还有对象。
一元操作符
只操作一个值的操作符叫
一元操作符
(
unary operator
)
递增/递减操作符
有两个版本:前缀版和后缀版。顾名思义,前缀版就是位于要操作的变量前头,后缀版就是位于要操作的变量后头。
//前缀递增操作符
let age = 24
++age; //同等于 age = age + 1;
//前缀递减操作符
let age = 29;
--age; //同等于 age = age - 1;
//后缀递增操作符
let age = 24
age++;
//后缀递减操作符
let age = 29;
age--;
前缀递增和递减在语句中的优先级是相等的,因此会从左到右依次求值。
let num1 = 2;
let num2 = 20;
let num3 = --num1 + num2;
let num4 = num1 + num2;
console.log(num3); // 21
console.log(num4); // 21 是因为加法使用的也是递减后的值。
后缀版递增和递减在语句被求值后才发生
let num1 = 2;
let num2 = 20;
let num3 = num1-- + num2;
let num4 = num1 + num2;
console.log(num3); // 22
console.log(num4); // 21
一元加和减
一元加由一个加号(
+
)表示,放在变量前头,对数值没有任何影响
let num = 25;
num = +num;
console.log(num); // 25
一元减由一个减号(
-
)表示,放在变量前头,主要用于把数值变成负值
let num = 25;
num = -num;
console.log(num); // -25
如果将一元
加
应用到非数值,则会执行与使用
Number()
转型函数一样的类型转换:布尔值
false和 true
转换为
0
和
1
,字符串根据特殊规则进行解析,对象会调用它们的
valueOf()
和
/
或
toString()方法以得到可以转换的值。
布尔操作符
逻辑非
逻辑非操作符由一个叹号(!
)表示,可应用给
ECMAScript
中的任何值。这个操作符始终返回布尔值,无论应用到的是什么数据类型。逻辑非操作符首先将操作数转换为布尔值,然后再对其取反。
- 如果操作数是对象,则返回 false。
- 如果操作数是空字符串,则返回 true。
- 如果操作数是非空字符串,则返回 false。
- 如果操作数是数值 0,则返回 true。
- 如果操作数是非 0 数值(包括 Infinity),则返回 false。
- 如果操作数是 null,则返回 true。
- 如果操作数是 NaN,则返回 true。
- 如果操作数是 undefined,则返回 true。
console.log(!false); // true
console.log(!"blue"); // false
console.log(!0); // true
console.log(!NaN); // true
console.log(!""); // true
console.log(!12345); // false
逻辑与
逻辑与操作符由两个和号(
&&
)表示,应用到两个值
let result = true && false;
逻辑或
逻辑或操作符由两个管道符(
||
)表示
let result = true || false;
利用这个行为,可以避免给变量赋值 null 或 undefined。
let myObject = preferredObject || backupObject;
//如果 preferredObject 不是 null,则它的值就会赋给myObject;如果 preferredObject 是 null,则backupObject 的值就会赋给 myObject。
乘性操作符
乘法操作符
乘法操作符由一个星号(
*
)表示,可以用于计算两个数值的乘积
let result = 34 * 56;
除法操作符
除法操作符由一个斜杠(
/
)表示,用于计算第一个操作数除以第二个操作数的商
let result = 66 / 11;
取模操作符
取模(余数)操作符由一个百分比符号(
%
)表示
let result = 26 % 5; // 等于 1
加性操作符
加法操作符
let result = 1 + 2;
如果两个操作数都是字符串,则将第二个字符串拼接到第一个字符串后面
如果只有一个操作数是字符串,则将另一个操作数转换为字符串,再将两个字符串拼接在一起
let result = 'hello' + '你好'
let result2 = 5 + "5"; // 一个数值和一个字符串
console.log(result); // "hello你好"
console.log(result2); // "55"
减法操作符
let result = 2 - 1;
关系操作符
关系操作符执行比较两个值的操作,包括小于(
<
)、大于(
>
)、小于等于(
<=
)和大于等于(
>=
),用法跟数学课上学的一样。
相等操作符
等于和不等于
等于操作符用两个等于号(
==
)表示,如果操作数相等,则会返回
true。
不等于 操作符用叹号和等于号(!=
)表示,如果两个操作数不相等,则会返回
true
。
全等和不全等
全等操作符由 3
个等于号(
===
)表示,只有两个操作数在不转换的前提下相等才返回
true。
let result1 = ("55" == 55); // true,转换后相等
let result2 = ("55" === 55); // false,不相等,因为数据类型不同
不全等操作符用一个叹号和两个等于号(
!==
)表示,只有两个操作数在不转换的前提下不相等才
返回
true
。
let result1 = ("55" != 55); // false,转换后相等
let result2 = ("55" !== 55); // true,不相等,因为数据类型不同
条件操作符
语法:
variable = boolean_expression ? true_value : false_value;
如果
boolean_expression
是
true
,则赋值
true_value
;如果boolean_expression 是
false
,则赋值
false_value
赋值操作符
- 乘后赋值(*=)
- 除后赋值(/=)
- 取模后赋值(%=)
- 加后赋值(+=)
- 减后赋值(-=)
- 左移后赋值(<<=)
- 右移后赋值(>>=)
- 无符号右移后赋值(>>>=)
案例:
let num = 10;
num = num + 10;
//以上代码的第二行可以通过复合赋值来完成:
let num = 10;
num += 10;
逗号操作符
逗号操作符可以用来在一条语句中执行多个操作,如下所示:
let num1 = 1, num2 = 2, num3 = 3;
在赋值时使用逗号操作符分隔值,最终会返回表达式中最后一个值:
let num = (5, 1, 4, 8, 0); // num 的值为 0