From fa7fc16682d4e8636d4b8f6355dd9415bfd54acb Mon Sep 17 00:00:00 2001 From: qianguyihao Date: Thu, 11 Jun 2020 21:20:56 +0800 Subject: [PATCH] =?UTF-8?q?update:=20=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=9A=84?= =?UTF-8?q?=E5=B8=B8=E8=A7=81=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 04-JavaScript基础/06-typeof和数据类型转换.md | 18 ++- .../{11-包装类.md => 11-基本包装类型.md} | 119 +++++++++--------- .../12-内置对象 String:字符串的常见方法.md | 20 +-- ...对象:Math.md => 13-内置对象:Number和Math.md} | 0 4 files changed, 90 insertions(+), 67 deletions(-) rename 04-JavaScript基础/{11-包装类.md => 11-基本包装类型.md} (88%) rename 04-JavaScript基础/{13-内置对象:Math.md => 13-内置对象:Number和Math.md} (100%) diff --git a/04-JavaScript基础/06-typeof和数据类型转换.md b/04-JavaScript基础/06-typeof和数据类型转换.md index d3f38d8..5a82235 100644 --- a/04-JavaScript基础/06-typeof和数据类型转换.md +++ b/04-JavaScript基础/06-typeof和数据类型转换.md @@ -335,7 +335,7 @@ parseFloat() 的几个特性,可以参照 parseInt()。 ## 转换为 Boolean -将其他的数据类型转换为 Boolean,可以使用 Boolean()函数。情况如下: +其他的数据类型都可以转换为 Boolean类型。情况如下: - 情况一:数字 --> 布尔。除了 0 和 NaN,其余的都是 true。也就是说,`Boolean(NaN)`的结果是 false。 @@ -348,6 +348,22 @@ parseFloat() 的几个特性,可以参照 parseInt()。 PS:转换为 Boolean 的这几种情况,**很重要**,开发中会经常用到。 +**1、隐式转换为 Boolean 类型**: + +当非 Boolean 类型的数值和 Boolean类型的数值做比较时,会先把前者进行隐式转换为 Boolean类型,然后再做比较。举例如下: + +```js +console.log(1 == true); // 打印结果:true +console.log(0 == true); // 打印结果:false +``` + +**2、显式转换为 Boolean 类型**: + +方法1:使用 `!!`可以显式转换为 Boolean 类型。比如 `!!3`的结果是true。 + +方法2:使用 Boolean()函数可以显式转换为 Boolean 类型。 + + ## 知识补充:其他进制的数字 diff --git a/04-JavaScript基础/11-包装类.md b/04-JavaScript基础/11-基本包装类型.md similarity index 88% rename from 04-JavaScript基础/11-包装类.md rename to 04-JavaScript基础/11-基本包装类型.md index cbf0195..e232a95 100644 --- a/04-JavaScript基础/11-包装类.md +++ b/04-JavaScript基础/11-基本包装类型.md @@ -1,57 +1,4 @@ -## 包装类的介绍 -我们都知道,js 中的数据类型包括以下几种。 - -- 基本数据类型:String、Number、Boolean、Null、Undefined - -- 引用数据类型:Object - -JS 为我们提供了**三个包装类**: - -- String():将基本数据类型字符串,转换为 String 对象。 - -- Number():将基本数据类型的数字,转换为 Number 对象。 - -- Boolean():将基本数据类型的布尔值,转换为 Boolean 对象。 - -通过上面这这三个包装类,我们可以**将基本数据类型的数据转换为对象**。 - -代码举例: - -```javascript -let str1 = 'qianguyihao'; -let str2 = new String('qianguyihao'); - -let num = new Number(3); - -let bool = new Boolean(true); - -console.log(typeof str1); // 打印结果:string -console.log(typeof str2); // 注意,打印结果:object -``` - -**需要注意的是**:我们在实际应用中不会使用基本数据类型的对象。如果使用基本数据类型的对象,在做一些比较时可能会带来一些**不可预期**的结果。 - -比如说: - -```javascript -var boo1 = new Boolean(true); -var boo2 = new Boolean(true); - -console.log(boo1 === boo2); // 打印结果竟然是:false -``` - -再比如说: - -```javascript -var boo3 = new Boolean(false); - -if (boo3) { - console.log('qianguyihao'); // 这行代码竟然执行了 -} -``` - -显然,使用 typeof 去检查类型时, ## 基本数据类型不能绑定属性和方法 @@ -71,7 +18,7 @@ console.log(str.aaa); //打印结果为:undefined 上方代码中,当我们尝试打印`str.aaa`的时候,会发现打印结果为:undefined。也就是说,不能给 `string` 绑定属性和方法。 -当然,我们可以打印 str.length、str.indexOf("m")等等。因为这两个方法的底层做了数据类型转换(**临时**将 `string` 字符串转换为 `String` 对象,然后再调用内置方法),也就是我们在上一篇文章中讲到的**包装类**。 +当然,我们可以打印 str.length、str.indexOf("m")等等。因为这两个方法的底层做了数据类型转换(**临时**将 `string` 字符串转换为 `String` 对象,然后再调用内置方法),也就是我们在上一段中讲到的**包装类**。 **2、引用数据类型:** @@ -97,7 +44,65 @@ console.log(strObj.aaa); 内置对象 Boolean 也有一些自带的方法,但是用的不多。 -## 基本包装类型【重要】 +### 基本包装类型 + + +### 介绍 + +我们都知道,js 中的数据类型包括以下几种。 + +- 基本数据类型:String、Number、Boolean、Null、Undefined + +- 引用数据类型:Object + +JS 为我们提供了三个**基本包装类型**: + +- String():将基本数据类型字符串,转换为 String 对象。 + +- Number():将基本数据类型的数字,转换为 Number 对象。 + +- Boolean():将基本数据类型的布尔值,转换为 Boolean 对象。 + +通过上面这这三个包装类,我们可以**将基本数据类型的数据转换为对象**。 + +代码举例: + +```javascript +let str1 = 'qianguyihao'; +let str2 = new String('qianguyihao'); + +let num = new Number(3); + +let bool = new Boolean(true); + +console.log(typeof str1); // 打印结果:string +console.log(typeof str2); // 注意,打印结果:object +``` + +**需要注意的是**:我们在实际应用中一般不会使用基本数据类型的对象。如果使用基本数据类型的对象,在做一些比较时可能会带来一些**不可预期**的结果。 + +比如说: + +```javascript +var boo1 = new Boolean(true); +var boo2 = new Boolean(true); + +console.log(boo1 === boo2); // 打印结果竟然是:false +``` + +再比如说: + +```javascript +var boo3 = new Boolean(false); + +if (boo3) { + console.log('qianguyihao'); // 这行代码竟然执行了 +} +``` + +显然,使用 typeof 去检查类型时, + +### 基本包装类型的作用 当我们对一些基本数据类型的值去调用属性和方法时,浏览器会**临时使用包装类将基本数据类型转换为引用数据类型**,这样的话,基本数据类型就有了属性和方法,然后再调用对象的属性和方法;调用完以后,再将其转换为基本数据类型。 @@ -112,7 +117,7 @@ console.log(str.length); // 打印结果:11 ```js // 步骤(1):把简单数据类型 string 转换为 引用数据类型 String,保存到临时变量中 -var temp = new String('qianguyihao); +var temp = new String('qianguyihao'); // 步骤(2):把临时变量的值 赋值给 str str = temp; @@ -122,7 +127,7 @@ temp = null; ``` -### 在底层,字符串以字符数组的形式保存 +## 在底层,字符串以字符数组的形式保存 在底层,字符串是以字符数组的形式保存的。代码举例: diff --git a/04-JavaScript基础/12-内置对象 String:字符串的常见方法.md b/04-JavaScript基础/12-内置对象 String:字符串的常见方法.md index d53b67b..4a86538 100644 --- a/04-JavaScript基础/12-内置对象 String:字符串的常见方法.md +++ b/04-JavaScript基础/12-内置对象 String:字符串的常见方法.md @@ -426,7 +426,7 @@ console.log(result); // 打印结果:qianguyihao 新的数组 = str.split(分隔符); ``` -解释:将一个字符串拆分成一个数组。不会改变原字符串。 +解释:通过指定的分隔符,将一个字符串拆分成一个**数组**。不会改变原字符串。 备注:`split()`这个方法在实际开发中用得非常多。一般来说,从接口拿到的 json 数据中,经常会收到类似于`"q, i, a, n"`这样的字符串,前端需要将这个字符串拆分成`['q', 'i', 'a', 'n']`数组,这个时候`split()`方法就派上用场了。 @@ -443,22 +443,24 @@ console.log(array); // 打印结果是数组:["qian", " gu", " yi", " hao"] ```javascript //split()方法:字符串变数组 -var str3 = '生命壹号|许嵩|smyhvae'; +var str3 = '千古壹号|qianguyihao|许嵩'; -console.log(str3); - -console.log(str3.split()); // 无参数,表示:把字符串作为一个元素添加到数组中。 +console.log('结果1:' +str3.split()); // 无参数,表示:把整个字符串作为一个元素添加到数组中。 console.log(str3.split('')); // 参数为空字符串,则表示:分隔字符串中每一个字符,分别添加到数组中 -console.log(str3.split('|')); // 参数为指定字符,表示:此字符将不会出现在数组的任意一个元素中 +console.log(str3.split('|')); // 参数为指定字符,表示:用 '|' 分隔字符串。此分隔符将不会出现在数组的任意一个元素中 -console.log(str3.split('许')); // 同理 +console.log(str3.split('许')); // 同上 ``` -打印结果: +打印结果:(都是数组) + +![](http://img.smyhvae.com/20200611_2050.png) + + + -![](http://img.smyhvae.com/20180202_1503.png) ## replace() diff --git a/04-JavaScript基础/13-内置对象:Math.md b/04-JavaScript基础/13-内置对象:Number和Math.md similarity index 100% rename from 04-JavaScript基础/13-内置对象:Math.md rename to 04-JavaScript基础/13-内置对象:Number和Math.md