update:运算符
This commit is contained in:
parent
eedf81e5e9
commit
7d9ec01651
@ -193,7 +193,7 @@ parseFloat()和parseInt()的作用类似,不同的是,parseFloat()可以获
|
||||
|
||||
## 转换为Boolean
|
||||
|
||||
将其他的数据类型转换为Boolean,可以使用**Boolean()**函数。
|
||||
将其他的数据类型转换为Boolean,可以使用Boolean()函数。
|
||||
|
||||
- 情况一:数字 --> 布尔。除了0和NaN,其余的都是true。
|
||||
|
||||
|
@ -75,7 +75,7 @@
|
||||
|
||||
### 算数运算符的注意事项
|
||||
|
||||
(1)当对非Number类型的值进行运算(包括`+`、`-`、`*`、`/`)时,会将这些值转换为Number然后在运算。(注:`Number + 字符串`、`字符串 + 字符串`是特例,稍后再讲)
|
||||
(1)当对非Number类型的值进行运算(包括`+`、`-`、`*`、`/`)时,会将这些值转换为Number然后再运算。(注:`字符串 + Number`、`字符串 + 字符串`是特例,稍后再讲)
|
||||
|
||||
比如:
|
||||
|
||||
@ -89,9 +89,8 @@
|
||||
result4 = 100 - '1' // 99
|
||||
```
|
||||
|
||||
另外,我们可以利用这一特点
|
||||
|
||||
(2)任何值和NaN做运算都得NaN。
|
||||
(2)任何值和NaN做运算的结果都是NaN。
|
||||
|
||||
(3)任何的值和字符串做加法运算,都会先转换为字符串,然后再做拼串操作。
|
||||
|
||||
@ -103,7 +102,9 @@
|
||||
result2 = '1' + 2 + 3; // 123
|
||||
```
|
||||
|
||||
我们可以利用这一特点,来将一个任意的数据类型转换为String:我们只需要为任意的数据类型 + 一个 "" 即可将其转换为String。这是一种隐式的类型转换,由浏览器自动完成,实际上它也是调用String()函数。
|
||||
我们可以利用这一特点,来将一个任意的数据类型转换为String:我们只需要为任意的数据类型 + 一个 "" 即可将其转换为String。这是一种**隐式**的类型转换,由浏览器自动完成,实际上它也是调用String()函数。也就是说,`c = c + ""` 等价于 `c = String(c)`。
|
||||
|
||||
|
||||
|
||||
(4)任何值做`-`、`*`、`/`运算时都会自动转换为Number。
|
||||
|
||||
@ -159,6 +160,20 @@ sqrt即“square 开方”。比如:
|
||||
|
||||
一元运算符,只需要一个操作数。
|
||||
|
||||
常见的一元运算符如下。
|
||||
|
||||
### typeof
|
||||
|
||||
typeof就是典型的一元运算符,因为后面只跟一个操作数。
|
||||
|
||||
举例如下:
|
||||
|
||||
```javascript
|
||||
var a = '123';
|
||||
console.log(typeof a); // 打印结果:string
|
||||
```
|
||||
|
||||
|
||||
### 正号 `+`
|
||||
|
||||
(1)正号不会对数字产生任何影响。比如说,`2`和`+2`是一样的。
|
||||
@ -181,7 +196,9 @@ sqrt即“square 开方”。比如:
|
||||
|
||||
打印结果:
|
||||
|
||||
20180811_2245.png
|
||||
|
||||
![](http://img.smyhvae.com/20181221_2050.png)
|
||||
|
||||
|
||||
### 负号 `-`
|
||||
|
||||
@ -236,11 +253,11 @@ sqrt即“square 开方”。比如:
|
||||
|
||||
逻辑运算符有三个:
|
||||
|
||||
- && 与(且):两个都为真,结果才为真
|
||||
- `&&` 与(且):两个都为真,结果才为真。
|
||||
|
||||
- || 或:只要有一个是真,结果就是真
|
||||
- `||` 或:只要有一个是真,结果就是真。
|
||||
|
||||
- ! 非:对一个布尔值进行取反。
|
||||
- `!` 非:对一个布尔值进行取反。
|
||||
|
||||
**连比的写法:**
|
||||
|
||||
@ -261,6 +278,9 @@ sqrt即“square 开方”。比如:
|
||||
alert(a>=18 && a<= 65);
|
||||
```
|
||||
|
||||
|
||||
PS:上面的这个`a>=18 && a<= 65`千万别想当然的写成` 18<= a <= 65`啊,没有这种语法。
|
||||
|
||||
### 注意事项
|
||||
|
||||
(1)能参与逻辑运算的,都是布尔值。
|
||||
@ -296,8 +316,8 @@ sqrt即“square 开方”。比如:
|
||||
非布尔值进行**与或运算**时,会先将其转换为布尔值,然后再运算,但返回结果是**原值**。比如说:
|
||||
|
||||
```javascript
|
||||
var result = 1 && 2; // 运算过程:true && true;
|
||||
console.log('result:' + result); // 打印结果:2
|
||||
var result = 5 && 6; // 运算过程:true && true;
|
||||
console.log('result:' + result); // 打印结果:6(也就是说最后面的那个值。)
|
||||
```
|
||||
|
||||
上方代码可以看到,虽然运算过程为布尔值的运算,但返回结果是原值。
|
||||
@ -306,7 +326,7 @@ sqrt即“square 开方”。比如:
|
||||
|
||||
**与运算**的返回结果:(以两个非布尔值的运算为例)
|
||||
|
||||
- 如果第一个值为true,则必然返回第二个值
|
||||
- 如果第一个值为true,则必然返回第二个值(所以说,如果所有的值都为true,则返回的是最后一个值)
|
||||
|
||||
- 如果第一个值为false,则直接返回第一个值
|
||||
|
||||
@ -349,17 +369,47 @@ sqrt即“square 开方”。比如:
|
||||
!== 不全等于
|
||||
```
|
||||
|
||||
关系运算符,得到的结果都是布尔值:要么是true,要么是false。
|
||||
**关系运算符,得到的结果都是布尔值:要么是true,要么是false**。
|
||||
|
||||
举例如下:
|
||||
|
||||
```javascript
|
||||
var result = 5 > 10; // false
|
||||
```
|
||||
|
||||
### 非数值的比较
|
||||
|
||||
(1)对于非数值进行比较时,会将其转换为数字然后再比较。
|
||||
|
||||
(2)特殊情况:如果符号两侧的值都是字符串时,**不会**将其转换为数字进行比较。比较两个字符串时,比较的是字符串的**Unicode编码**。
|
||||
举例如下:
|
||||
|
||||
```javascript
|
||||
console.log(1 > true); //false
|
||||
console.log(1 >= true); //true
|
||||
console.log(1 > "0"); //true
|
||||
|
||||
//console.log(10 > null); //true
|
||||
|
||||
//任何值和NaN做任何比较都是false
|
||||
|
||||
console.log(10 <= "hello"); //false
|
||||
console.log(true > false); //true
|
||||
|
||||
```
|
||||
|
||||
(2)特殊情况:如果符号两侧的值都是字符串时,**不会**将其转换为数字进行比较。比较两个字符串时,比较的是字符串的**Unicode编码**。【非常重要,这里是个大坑】
|
||||
|
||||
比较字符编码时,是一位一位进行比较。如果两位一样,则比较下一位,所以借用它可以来对英文进行排序。
|
||||
|
||||
**注意**:在比较两个字符串型的数字时,一定要先转型。
|
||||
PS:所以说,当你尝试去比较`"123"`和`"56"`这两个字符串时,你会发现,字符串"56"竟然比字符串"123"要大。也就是说,下面这样代码的打印结果,其实是true:(这个我们一定要注意,在日常开发中,很容易忽视)
|
||||
|
||||
```javascript
|
||||
// 比较两个字符串时,比较的是字符串的字符编码,所以可能会得到不可预期的结果
|
||||
console.log("56" > "123"); // true
|
||||
```
|
||||
|
||||
**因此**:当我们在比较两个字符串型的数字时,**一定一定要先转型**,比如 `parseInt()`。
|
||||
|
||||
|
||||
(3)任何值和NaN做任何比较都是false。
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user