add:运算符的优先级
This commit is contained in:
parent
ccd6d90d83
commit
1eb9f24f80
@ -535,7 +535,7 @@ border-left-width: 0;
|
||||
|
||||
## 我的公众号
|
||||
|
||||
想学习<font color=#0000ff>**代码之外的软技能**</font>?不妨关注我的微信公众号:**生命团队**(id:`vitateam`)。
|
||||
想学习<font color=#0000ff>**代码之外的软技能**</font>?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。
|
||||
|
||||
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
|
||||
|
||||
|
@ -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。
|
||||
|
||||
举例2:(运算符优先级)
|
||||
举例2:(注意运算符优先级)
|
||||
|
||||
```
|
||||
var a = 1 + 2 * 3 % 4 / 3;
|
||||
@ -82,13 +84,13 @@
|
||||
比如:
|
||||
|
||||
```javascript
|
||||
result1 = true + 1; // 2 = 1+ 1
|
||||
result1 = true + 1; // 2 = 1+ 1
|
||||
|
||||
result2 = true + false; // 1 = 1+ 0
|
||||
result2 = true + false; // 1 = 1+ 0
|
||||
|
||||
result3 = 1 + null; // 1 = 1+ 0
|
||||
result3 = 1 + null; // 1 = 1+ 0
|
||||
|
||||
result4 = 100 - '1' // 99
|
||||
result4 = 100 - '1' // 99
|
||||
```
|
||||
|
||||
|
||||
@ -99,9 +101,9 @@
|
||||
比如:
|
||||
|
||||
```javascript
|
||||
result1 = 1 + 2 + '3' // 33
|
||||
result1 = 1 + 2 + '3' // 33
|
||||
|
||||
result2 = '1' + 2 + 3; // 123
|
||||
result2 = '1' + 2 + 3; // 123
|
||||
```
|
||||
|
||||
我们可以利用这一特点,来将一个任意的数据类型转换为String:我们只需要为任意的数据类型 + 一个 "" 即可将其转换为String。这是一种**隐式**的类型转换,由浏览器自动完成,实际上它也是调用String()函数。也就是说,`c = c + ""` 等价于 `c = String(c)`。
|
||||
@ -171,8 +173,8 @@ typeof就是典型的一元运算符,因为后面只跟一个操作数。
|
||||
举例如下:
|
||||
|
||||
```javascript
|
||||
var a = '123';
|
||||
console.log(typeof a); // 打印结果:string
|
||||
var a = '123';
|
||||
console.log(typeof a); // 打印结果:string
|
||||
```
|
||||
|
||||
|
||||
@ -183,17 +185,17 @@ console.log(typeof a); // 打印结果:string
|
||||
(2)我们可以对一个其他的数据类型使用`+`,来将其转换为number【小技巧】。比如:
|
||||
|
||||
```javascript
|
||||
var a = true;
|
||||
a = +a; // 注意这行代码的一元运算符操作
|
||||
console.log('a:' + a);
|
||||
console.log(typeof a);
|
||||
var a = true;
|
||||
a = +a; // 注意这行代码的一元运算符操作
|
||||
console.log('a:' + a);
|
||||
console.log(typeof a);
|
||||
|
||||
console.log('-----------------');
|
||||
console.log('-----------------');
|
||||
|
||||
var b = '18';
|
||||
b = +b; // 注意这行代码的一元运算符操作
|
||||
console.log('b:' + b);
|
||||
console.log(typeof b);
|
||||
var b = '18';
|
||||
b = +b; // 注意这行代码的一元运算符操作
|
||||
console.log('b:' + b);
|
||||
console.log(typeof b);
|
||||
```
|
||||
|
||||
打印结果:
|
||||
@ -267,7 +269,7 @@ console.log(typeof a); // 打印结果:string
|
||||
|
||||
举例1:
|
||||
|
||||
```
|
||||
```javascript
|
||||
console.log(3 < 2 && 2 < 4);
|
||||
```
|
||||
|
||||
@ -302,11 +304,11 @@ PS:上面的这个`a>=18 && a<= 65`千万别想当然的写成` 18<= a <= 65`
|
||||
(4)如果对**非布尔值**进行逻辑运算,则会**先将其转换为布尔值**,然后再操作。举例:
|
||||
|
||||
```javascript
|
||||
var a = 10;
|
||||
a = !a;
|
||||
var a = 10;
|
||||
a = !a;
|
||||
|
||||
console.log(a); // false
|
||||
console.log(typeof a); // boolean
|
||||
console.log(a); // false
|
||||
console.log(typeof a); // boolean
|
||||
```
|
||||
|
||||
上面的例子,我们可以看到,对非布尔值进行`!`操作之后,返回结果为布尔值。
|
||||
@ -338,6 +340,20 @@ PS:上面的这个`a>=18 && a<= 65`千万别想当然的写成` 18<= a <= 65`
|
||||
|
||||
- 如果第一个值为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
|
||||
```
|
||||
|
||||
(2)`== `这个符号并不严谨,会将不同类型的东西,转为相同类型进行比较。例如:
|
||||
(2)`== `这个符号并不严谨,会将不同类型的东西,**转为相同类型**进行比较(大部分情况下,都是转换为数字)。例如:
|
||||
|
||||
```
|
||||
console.log("6" == 6); //true
|
||||
console.log(0 == -0); //true
|
||||
```javascript
|
||||
console.log("6" == 6); // 打印结果:true。这里的字符串"6"会先转换为数字6,然后再进行比较
|
||||
console.log(true == "1"); // 打印结果:true
|
||||
console.log(0 == -0); // 打印结果:true
|
||||
|
||||
console.log(null == 0); // 打印结果:true
|
||||
```
|
||||
|
||||
(3)undefined 衍生自 null,所以这两个值做相等判断时,会返回true。
|
||||
@ -446,9 +465,21 @@ console.log(NaN == NaN); //false
|
||||
|
||||
问题:那如果我想判断 b的值是否为NaN,该怎么办呢?
|
||||
|
||||
答案:可以通过isNaN()函数来判断一个值是否是NaN。如果 b 为 NaN,则返回true;否则返回false。
|
||||
答案:可以通过isNaN()函数来判断一个值是否是NaN。举例:
|
||||
|
||||
(5)如果要保证**完全等于**,我们就要用三个等号`===`。全等不会做类型转换。例如:
|
||||
|
||||
```javascript
|
||||
console.log(isNaN(b)); //false
|
||||
```
|
||||
|
||||
|
||||
如上方代码所示,如果 b 为 NaN,则返回true;否则返回false。
|
||||
|
||||
|
||||
### `===`全等符号的强调
|
||||
|
||||
|
||||
如果要保证**完全等于**,我们就要用三个等号`===`。**全等不会做类型转换**。例如:
|
||||
|
||||
```javascript
|
||||
console.log("6" === 6); //false
|
||||
@ -491,9 +522,54 @@ console.log(NaN == NaN); //false
|
||||
如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值然后再运算。
|
||||
|
||||
|
||||
## 运算符的优先级
|
||||
|
||||
运算符的优先级如下:(越往上,优先级越高)
|
||||
|
||||
|
||||
- `.`、`[]`、`new`
|
||||
|
||||
|
||||
- ()
|
||||
|
||||
- ++、--
|
||||
|
||||
- `!`、`~`、`+`(单目)、`-`(单目)、`typeof`、`void`、`delete`
|
||||
|
||||
- `%`、`*`、`/`
|
||||
|
||||
- `+`(双目)、`-`(双目)
|
||||
|
||||
- `<<`、`>>`、`>>>`
|
||||
|
||||
- `<`、`<=`、`>`、`>=`
|
||||
|
||||
- `==`、`!==`、`===`
|
||||
|
||||
- `&`
|
||||
|
||||
- `^`
|
||||
|
||||
- `|`
|
||||
|
||||
- `&&`
|
||||
|
||||
- `||`
|
||||
|
||||
- `?:`
|
||||
|
||||
- `=`、`+=`、`-=`、`*=`、`/=`、`%=`、`<<=`、`>>=`、`>>>=`、`&=`、`^=`、`|=`
|
||||
|
||||
- `,`
|
||||
|
||||
|
||||
备注:你在实际写代码的时候,如果不清楚哪个优先级更高,可以把括号运用上。
|
||||
|
||||
|
||||
## Unicode 编码表
|
||||
|
||||
> 这一段中,我们来讲引申的内容:Unicode编码的使用。
|
||||
|
||||
1、在字符串中可以使用转义字符输入Unicode编码。格式如下:
|
||||
|
||||
```
|
||||
@ -512,7 +588,8 @@ console.log(NaN == NaN); //false
|
||||
|
||||
打印结果:
|
||||
|
||||
20181222_1218.png
|
||||
|
||||
![](http://img.smyhvae.com/20181222_1218.png)
|
||||
|
||||
|
||||
2、同样,我们可以在网页中使用Unicode编码。格式如下:
|
||||
@ -525,10 +602,14 @@ PS:我们知道,Unicode编码采用的是16进制,但是,这里的编码
|
||||
|
||||
举例如下:
|
||||
|
||||
20181222_1226.png
|
||||
```html
|
||||
<h1 style="font-size: 100px;">⚄</h1>
|
||||
|
||||
```
|
||||
|
||||
打印结果:
|
||||
|
||||
![](http://img.smyhvae.com/20181222_1226.png)
|
||||
|
||||
|
||||
## 我的公众号
|
||||
|
Loading…
Reference in New Issue
Block a user