add(JS基础):运算符

This commit is contained in:
qianguyihao
2018-08-12 12:15:50 +08:00
parent 79bee6f8ef
commit 365576e7bb
5 changed files with 821 additions and 15 deletions

View File

@@ -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自增后的值
### 自减 `-- `
原理同上。
## 布尔值、关系运算符、逻辑运算符
### 布尔值