JavaScript 运算符
JavaScript 算数运算符
算数运算符用于对数字执行算数运算:
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
** | 幂 |
/ | 除法 |
% | 系数 |
++ | 递增 |
– | 递减 |
JavaScript 赋值运算符
赋值运算符向 JavaScript 变量赋值。
运算符 | 例子 | 等同于 |
---|---|---|
= | x = y | x = y |
+= | x += y | x = x + y |
-= | x -= y | x = x - y |
*= | x *= y | x = x * y |
/= | x /= y | x = x / y |
%= | x %= y | x = x % y |
加法赋值运算符(+=
)向变量添加一个值。
JavaScript 比较运算符
运算符 | 描述 |
---|---|
== | 等于 |
=== | 等值等型 |
!= | 不相等 |
!== | 不等值或不等型 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
?: | 三元运算符 |
JavaScript 逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
JavaScript 类型运算符
运算符 | 描述 |
---|---|
typeof | 返回变量的类型。 |
instanceof | 返回 true,如果对象是对象类型的实例。 |
JavaScript 位运算符
位运算符处理 32 位数。
该运算中的任何数值运算数都会被转换为 32 位的数。结果会被转换回 JavaScript 数。
运算符 | 描述 | 例子 | 等同于 | 结果 | 十进制 |
---|---|---|---|---|---|
& | 与 | 5 & 1 | 0101 & 0001 | 0001 | 1 |
| | 或 | 5 | 1 | 0101 | 0001 | 0101 | 5 |
~ | 非 | ~ 5 | ~0101 | 1010 | 10 |
^ | 异或 | 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
<< | 零填充左位移 | 5 << 1 | 0101 << 1 | 1010 | 10 |
>> | 有符号右位移 | 5 >> 1 | 0101 >> 1 | 0010 | 2 |
>>> | 零填充右位移 | 5 >>> 1 | 0101 >>> 1 | 0010 | 2 |
上例使用 4 位无符号的例子。但是 JavaScript 使用 32 位有符号数。
因此,在 JavaScript 中,~ 5 不会返回 10,而是返回 -6。
~00000000000000000000000000000101 将返回 11111111111111111111111111111010。
算术运算
- 加法(+)
- 减法(-)
- 乘法(*)
- 除法(/)
- 取余(%)
- 递增(自增)(++)
- 递减(自减)(–)
- 取幂(**)(math.pow(x,y))
运算符优先级
运算符优先级(Operator precedence)描述了在算术表达式中所执行操作的顺序。
- 乘法(
*
)和除法(%
)比加法(+
)和减法(-
)拥有更高的优先级。 - 当使用括号时,括号中的运算符会首先被计算。
- 当多个运算拥有相同的优先级时(比如加法和减法),对它们的计算是从左向右的:
数据类型
JavaScript 数据类型
JavaScript 变量能够保存多种数据类型:数值、字符串值、数组、对象、布尔值:
var length = 7; // 数字
var lastName = "Gates"; // 字符串
var cars = ["Porsche", "Volvo", "BMW"]; // 数组
var x = {firstName:"Bill", lastName:"Gates"}; // 对象
JavaScript 拥有动态类型
JavaScript 拥有动态类型。这意味着相同变量可用作不同类型:
var x; // 现在 x 是 undefined
var x = 7; // 现在 x 是数值
var x = "Bill"; // 现在 x 是字符串值
JavaScript 字符串值
- 字符串(或文本字符串)是一串字符(比如 “Bill Gates”)。
- 字符串被引号包围。您可使用单引号或双引号:
var carName = "Porsche 911"; // 使用双引号
var carName = 'Porsche 911'; // 使用单引号
var answer = 'He is called "Bill"'; // 单引号内的双引号
JavaScript 数值
- JavaScript 只有一种数值类型。
- 写数值时用不用小数点均可:
- 超大或超小的数值可以用科学计数法来写:
var x1 = 34.00; // 带小数点
var x2 = 34; // 不带小数点
var y = 123e5; // 12300000
var z = 123e-5; // 0.00123
JavaScript 布尔值
布尔值只有两个值:true
或 false
。
var x = true;
var y = false;
JavaScript 数组
- JavaScript 数组用方括号书写。
- 数组的项目由逗号分隔。
- 数组索引基于零,这意味着第一个项目是 [0],第二个项目是 [1],以此类推。
下面的代码声明(创建)了名为 cars 的数组,包含三个项目(汽车品牌):
var cars = ["Porsche", "Volvo", "BMW"];
JavaScript 对象
- JavaScript 对象用花括号来书写。
- 对象属性是 name:value 对,由逗号分隔。
typeof
运算符把对象、数组或null
返回object
。typeof
运算符不会把函数返回object
。
var person = {firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"};
Undefined
- 在 JavaScript 中,没有值的变量,其值是
undefined
。typeof 也返回undefined
。 - 任何变量均可通过设置值为
undefined
进行清空。其类型也将是undefined
。
空值
- 空值与
undefined
不是一回事。 - 空的字符串变量既有值也有类型。
Null
- 在 JavaScript 中,
null
是 “nothing”。它被看做不存在的事物。 - 不幸的是,在 JavaScript 中,
null
的数据类型是对象。 - 您可以把
null
在 JavaScript 中是对象理解为一个 bug。它本应是null
。 - 您可以通过设置值为
null
清空对象:
typeof 运算符
您可使用 JavaScript 的 typeof
来确定 JavaScript 变量的类型:
console.log(typeof num);
console.log(typeof str);
console.log(typeof person);
console.log(typeof un);
console.log(typeof nu);
console.log(typeof null);
console.log(typeof function fun() {});
number
string
object
undefined
object