add:运算符的优先级

This commit is contained in:
qianguyihao 2018-12-26 21:08:11 +08:00
parent ccd6d90d83
commit 1eb9f24f80
3 changed files with 119 additions and 36 deletions

View File

@ -535,7 +535,7 @@ border-left-width: 0;
## 我的公众号 ## 我的公众号
想学习<font color=#0000ff>**代码之外的软技能**</font>?不妨关注我的微信公众号:**生命团队**id`vitateam`)。 想学习<font color=#0000ff>**代码之外的软技能**</font>?不妨关注我的微信公众号:**千古壹号**id`qianguyihao`)。
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: 扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:

View File

@ -3,7 +3,7 @@
> 以下是正文。 > 以下是正文。
我们在[上一篇文章](http://www.cnblogs.com/smyhvae/p/8303507.html)里讲到了JS中**变量**的概念,本篇文章讲一下**运算符**和表达式。 我们在本文件夹的[第二篇](https://github.com/smyhvae/Web/blob/master/03-JavaScript%E5%9F%BA%E7%A1%80/02-%E5%8F%98%E9%87%8F.md)里讲到了JS中**变量**的概念,本篇文章讲一下**运算符**和表达式。
## 前言 ## 前言
@ -27,7 +27,9 @@
- 赋值运算符 - 赋值运算符
- 关系运算符s - 关系运算符
- 三元运算符(条件运算符)
## 算数运算符 ## 算数运算符
@ -37,7 +39,7 @@
**求余的举例** **求余的举例**
假设用户输入345怎么分别得到3、4、5这三个数呢ø 假设用户输入345怎么分别得到3、4、5这三个数呢
**答案** **答案**
@ -65,7 +67,7 @@
输出结果为3。 输出结果为3。
举例2运算符优先级 举例2注意运算符优先级)
``` ```
var a = 1 + 2 * 3 % 4 / 3; var a = 1 + 2 * 3 % 4 / 3;
@ -171,8 +173,8 @@ typeof就是典型的一元运算符因为后面只跟一个操作数。
举例如下: 举例如下:
```javascript ```javascript
var a = '123'; var a = '123';
console.log(typeof a); // 打印结果string console.log(typeof a); // 打印结果string
``` ```
@ -267,7 +269,7 @@ console.log(typeof a); // 打印结果string
举例1 举例1
``` ```javascript
console.log(3 < 2 && 2 < 4); console.log(3 < 2 && 2 < 4);
``` ```
@ -338,6 +340,20 @@ PS上面的这个`a>=18 && a<= 65`千万别想当然的写成` 18<= a <= 65`
- 如果第一个值为false则返回第二个值 - 如果第一个值为false则返回第二个值
实际开发中,我们经常是这样来处理容错的:
当成功调用一个接口后,针对返回的数据 result假设我们用变量a 接收。通常的写法是这样的:(这里我只是举个例子)
```javascript
if (result.resultCode == 0) {
var a = result && result.data && result.data.imgUrl;
}
```
## 赋值运算符 ## 赋值运算符
可以将符号右侧的值赋值给符号左侧的变量。 可以将符号右侧的值赋值给符号左侧的变量。
@ -425,11 +441,14 @@ console.log("56" > "123"); // true
console.log("我爱你中国" == "我爱你中国"); //输出结果为true console.log("我爱你中国" == "我爱你中国"); //输出结果为true
``` ```
2`== `这个符号并不严谨,会将不同类型的东西,转为相同类型进行比较。例如: 2`== `这个符号并不严谨,会将不同类型的东西,**转为相同类型**进行比较(大部分情况下,都是转换为数字)。例如:
``` ```javascript
console.log("6" == 6); //true console.log("6" == 6); // 打印结果true。这里的字符串"6"会先转换为数字6然后再进行比较
console.log(0 == -0); //true console.log(true == "1"); // 打印结果true
console.log(0 == -0); // 打印结果true
console.log(null == 0); // 打印结果true
``` ```
3undefined 衍生自 null所以这两个值做相等判断时会返回true。 3undefined 衍生自 null所以这两个值做相等判断时会返回true。
@ -446,9 +465,21 @@ console.log(NaN == NaN); //false
问题:那如果我想判断 b的值是否为NaN该怎么办呢 问题:那如果我想判断 b的值是否为NaN该怎么办呢
答案可以通过isNaN()函数来判断一个值是否是NaN。如果 b 为 NaN则返回true否则返回false。 答案可以通过isNaN()函数来判断一个值是否是NaN。举例:
5如果要保证**完全等于**,我们就要用三个等号`===`。全等不会做类型转换。例如:
```javascript
console.log(isNaN(b)); //false
```
如上方代码所示,如果 b 为 NaN则返回true否则返回false。
### `===`全等符号的强调
如果要保证**完全等于**,我们就要用三个等号`===`。**全等不会做类型转换**。例如:
```javascript ```javascript
console.log("6" === 6); //false console.log("6" === 6); //false
@ -491,9 +522,54 @@ console.log(NaN == NaN); //false
如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算。 如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算。
## 运算符的优先级
运算符的优先级如下:(越往上,优先级越高)
- `.`、`[]`、`new`
- ()
- ++、--
- `!`、`~`、`+`(单目)、`-`(单目)、`typeof`、`void`、`delete`
- `%`、`*`、`/`
- `+`(双目)、`-`(双目)
- `<<`、`>>`、`>>>`
- `<`、`<=`、`>`、`>=`
- `==`、`!==`、`===`
- `&`
- `^`
- `|`
- `&&`
- `||`
- `?:`
- `=`、`+=`、`-=`、`*=`、`/=`、`%=`、`<<=`、`>>=`、`>>>=`、`&=`、`^=`、`|=`
- `,`
备注:你在实际写代码的时候,如果不清楚哪个优先级更高,可以把括号运用上。
## Unicode 编码表 ## Unicode 编码表
> 这一段中我们来讲引申的内容Unicode编码的使用。
1、在字符串中可以使用转义字符输入Unicode编码。格式如下 1、在字符串中可以使用转义字符输入Unicode编码。格式如下
``` ```
@ -512,7 +588,8 @@ console.log(NaN == NaN); //false
打印结果: 打印结果:
20181222_1218.png
![](http://img.smyhvae.com/20181222_1218.png)
2、同样我们可以在网页中使用Unicode编码。格式如下 2、同样我们可以在网页中使用Unicode编码。格式如下
@ -525,10 +602,14 @@ PS我们知道Unicode编码采用的是16进制但是这里的编码
举例如下: 举例如下:
20181222_1226.png ```html
<h1 style="font-size: 100px;">&#9860;</h1>
```
打印结果:
![](http://img.smyhvae.com/20181222_1226.png)
## 我的公众号 ## 我的公众号

View File

@ -16,8 +16,10 @@ PS如果你发现文中的图片加载不出来不妨[看这里](https://g
### 学习交流 ### 学习交流
我建了一个“前端学习”的微信交流群,目前看来,群里的学习氛围很不错。里面加我微信bootmei拉你进群 我建了一个“前端学习”的微信交流群目前看来群里的学习氛围很不错。加我微信bootmei拉你进群
- 进群暗号:前端学习 - 进群暗号:前端学习
- 进群要求:爱分享 - 进群要求:爱分享