add(JS基础):运算符
This commit is contained in:
@@ -6,11 +6,29 @@
|
||||
我们在[上一篇文章](http://www.cnblogs.com/smyhvae/p/8303507.html)里讲到了JS中**变量**的概念,本篇文章讲一下**运算符**和表达式。
|
||||
|
||||
|
||||
## 前言
|
||||
|
||||
比如说`+`、`*`、`/`、`(` 都是**运算符**,而`(3+5)/2`则是**表达式**。
|
||||
|
||||
运算符有很多分类:数学运算符、逻辑运算符、自增运算符、赋值运算等。
|
||||
### 运算符的定义和分类
|
||||
|
||||
## 数学运算符
|
||||
运算符也叫操作符。通过运算符可以对一个或多个值进行运算,并获取运算结果。
|
||||
|
||||
比如:typeof 就是运算符,可以来获得一个值的类型。它会将该值的类型以**字符串**的形式返回:number string boolean undefined object。
|
||||
|
||||
注:运算符都是会返回结果的,而typeof这个运算符返回的结果就是变量的类型。那返回的结果的类型是什么呢?是字符串。
|
||||
|
||||
运算符有很多分类,比如:
|
||||
|
||||
- 算数运算符
|
||||
|
||||
- 逻辑运算符
|
||||
|
||||
- 自增运算符
|
||||
|
||||
- 赋值运算等
|
||||
|
||||
## 算数运算符
|
||||
|
||||
常见的数学运算符有以下几种:
|
||||
|
||||
@@ -57,6 +75,45 @@
|
||||
|
||||
原式 = 1 + 6 % 4 / 3 = 1 + 2 / 3 = 1.66666666666666
|
||||
|
||||
|
||||
### 算数运算符的注意事项
|
||||
|
||||
(1)当对非Number类型的值进行运算(包括`+`、`-`、`*`、`/`)时,会将这些值转换为Number然后在运算。(注:`Number + 字符串`、`字符串 + 字符串`是特例,稍后再讲)
|
||||
|
||||
比如:
|
||||
|
||||
```javascript
|
||||
result1 = true + 1; // 2 = 1+ 1
|
||||
|
||||
result2 = true + false; // 1 = 1+ 0
|
||||
|
||||
result3 = 1 + null; // 1 = 1+ 0
|
||||
|
||||
result4 = 100 - '1' // 99
|
||||
```
|
||||
|
||||
另外,我们可以利用这一特点
|
||||
|
||||
(2)任何值和NaN做运算都得NaN。
|
||||
|
||||
(3)任何的值和字符串做加法运算,都会先转换为字符串,然后再做拼串操作。
|
||||
|
||||
比如:
|
||||
|
||||
```javascript
|
||||
result1 = 1 + 2 + '3' // 33
|
||||
|
||||
result2 = '1' + 2 + 3; // 123
|
||||
```
|
||||
|
||||
我们可以利用这一特点,来将一个任意的数据类型转换为String:我们只需要为任意的数据类型 + 一个 "" 即可将其转换为String。这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数。
|
||||
|
||||
(4)任何值做`-`、`*`、`/`运算时都会自动转换为Number。
|
||||
|
||||
我们可以利用这一特点,为一个值`-0`、`*1`、`/1`来将其转换为Number。原理和Number()函数一样,使用起来更加简单。
|
||||
|
||||
|
||||
|
||||
### 乘方
|
||||
|
||||
如果想计算 `a 的 b 次方`,可以使用如下函数:
|
||||
@@ -103,6 +160,58 @@ sqrt即“square 开方”。比如:
|
||||
var a = Math.sqrt(36);
|
||||
```
|
||||
|
||||
## 一元运算符
|
||||
|
||||
一元运算符,只需要一个操作数。
|
||||
|
||||
### 正号 `+`
|
||||
|
||||
(1)正号不会对数字产生任何影响。比如说,`2`和`+2`是一样的。
|
||||
|
||||
(2)我们可以对一个其他的数据类型使用`+`,来将其转换为number【小技巧】。比如:
|
||||
|
||||
```javascript
|
||||
var a = true;
|
||||
a = +a; // 注意这行代码的一元运算符操作
|
||||
console.log('a:' + a);
|
||||
console.log(typeof a);
|
||||
|
||||
console.log('-----------------');
|
||||
|
||||
var b = '18';
|
||||
b = +b; // 注意这行代码的一元运算符操作
|
||||
console.log('b:' + b);
|
||||
console.log(typeof b);
|
||||
```
|
||||
|
||||
打印结果:
|
||||
|
||||
20180811_2245.png
|
||||
|
||||
### 负号 `-`
|
||||
|
||||
负号可以对数字进行取反。
|
||||
|
||||
## 自增和自减
|
||||
|
||||
### 自增 `++`
|
||||
|
||||
自增分成两种:`a++`和`++a`。
|
||||
|
||||
(1)对于一个变量自增以后,原变量的值会**立即**自增1。也就是说,无论是 `a++` 还是`++a`,都会立即使原变量的值自增1。
|
||||
|
||||
(2)**我们要注意的是**:`a`是变量,而`a++`和`++a`是**表达式**。
|
||||
|
||||
那这两种自增,有啥区别呢?区别是:`a++` 和 `++a`的值不同:(也就是说,表达式的值不同)
|
||||
|
||||
- `a++`的值等于原变量的值(a自增前的值)
|
||||
|
||||
- `++a`的值等于新值 (a自增后的值)
|
||||
|
||||
### 自减 `-- `
|
||||
|
||||
原理同上。
|
||||
|
||||
## 布尔值、关系运算符、逻辑运算符
|
||||
|
||||
### 布尔值
|
||||
|
||||
Reference in New Issue
Block a user