diff --git a/02-CSS/06-CSS盒模型详解.md b/02-CSS/06-CSS盒模型详解.md index 3f3bfe7..6e99fef 100644 --- a/02-CSS/06-CSS盒模型详解.md +++ b/02-CSS/06-CSS盒模型详解.md @@ -535,7 +535,7 @@ border-left-width: 0; ## 我的公众号 -想学习**代码之外的软技能**?不妨关注我的微信公众号:**生命团队**(id:`vitateam`)。 +想学习**代码之外的软技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。 扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: diff --git a/03-JavaScript基础/04-运算符.md b/03-JavaScript基础/04-运算符.md index 4c1fc05..56df668 100644 --- a/03-JavaScript基础/04-运算符.md +++ b/03-JavaScript基础/04-运算符.md @@ -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 +