diff --git a/01-HTML/05-HTML标签:字体标签和超链接.md b/01-HTML/05-HTML标签:字体标签和超链接.md index b70cd22..0135a04 100644 --- a/01-HTML/05-HTML标签:字体标签和超链接.md +++ b/01-HTML/05-HTML标签:字体标签和超链接.md @@ -20,7 +20,6 @@ - `™`:商标`™` - `绐`:文字`绐`。其实,`#32464`是汉字`绐`的unicode编码。 -要求背诵的特殊字符有:` `、`<`、`>`、`©`。 比如说,你想把`
`作为一个文本在页面上显示,直接写`
`是肯定不行的,因为这代表的是一个段落标签,所以这里需要用到**转义字符**。应该这么写: ```html diff --git a/04-JavaScript基础/04-基本数据类型:String & Number & Boolean.md b/04-JavaScript基础/04-基本数据类型:String & Number & Boolean.md index 6100b62..6b96379 100644 --- a/04-JavaScript基础/04-基本数据类型:String & Number & Boolean.md +++ b/04-JavaScript基础/04-基本数据类型:String & Number & Boolean.md @@ -56,9 +56,9 @@ var str = 'hello"; // 报错:Uncaught SyntaxError: Invalid or unexpected toke 在字符串中我们可以使用`\`作为转义字符,当表示一些特殊符号时可以使用`\`进行转义。 -- `\"` 表示 `"` +- `\"` 表示 `"` 双引号 -- `\'` 表示 `'` +- `\'` 表示 `'` 单引号 - `\\` 表示`\` @@ -164,6 +164,44 @@ console.log(str6); 千古壹号[object Object] ``` +## 模板字面量(模板字符串) + +ES6中引入了**模板字面量**,让我们省去了字符串拼接的烦恼。 + +### 在模板字符串中插入变量 + +举例: + +```js +let name = 'qianguyihao'; + +// 下面这一行是模板字面量,注意语法格式 +console.log(`我是${name}`); // 打印结果:我是 qianguyihao +``` + + +### 在模板字面量中插入表达式 + +在字符串中插入表达式,以往的写法必须是这样的: + +```js +const a = 5; +const b = 10; +console.log('this is ' + (a + b) + ' and\nnot ' + (2 * a + b) + '.'); +``` +现在通过模板字面量,我们可以使用一种更优雅的方式来表示: + +```js +const a = 5; +const b = 10; + +console.log(`this is ${a + b} and +not ${2 * a + b}.`); + +``` + + + ## 数值型:Number diff --git a/04-JavaScript基础/06-typeof和数据类型转换.md b/04-JavaScript基础/06-typeof和数据类型转换.md index f6c7829..d3f38d8 100644 --- a/04-JavaScript基础/06-typeof和数据类型转换.md +++ b/04-JavaScript基础/06-typeof和数据类型转换.md @@ -47,13 +47,22 @@ typeof 这个运算符的返回结果就是变量的类型。那返回结果的 **返回结果举例**: ```javascript -console.log(type []); // 空数组的打印结果:object +console.log(typeof []); // 空数组的打印结果:object -console.log(type {}); // 空对象的打印结果:object +console.log(typeof {}); // 空对象的打印结果:object ``` 代码解释:这里的空数组`[]`、空对象`{}` ,为啥他们在使用 typeof 时,返回值也是 `object`呢?因为这里的 返回结果`object`指的是**引用数据类型**。空数组、空对象都是**引用数据类型 Object**。 +typeof 无法区分数组,但 instanceof 可以。比如: + +```js +console.log([] instanceof Array); // 打印结果:true + +console.log({} instanceof Array); // 打印结果:false +``` + +关于 instanceof 的详细内容,以后讲对象的时候,会详细介绍。 ## 变量的类型转换的分类 diff --git a/04-JavaScript基础/11-包装类.md b/04-JavaScript基础/11-包装类.md index c3997ea..cbf0195 100644 --- a/04-JavaScript基础/11-包装类.md +++ b/04-JavaScript基础/11-包装类.md @@ -1,60 +1,57 @@ - - - ## 包装类的介绍 -我们都知道,js中的数据类型包括以下几种。 +我们都知道,js 中的数据类型包括以下几种。 -- 基本数据类型:String、Number、Boolean、Null、Undefined +- 基本数据类型:String、Number、Boolean、Null、Undefined -- 引用数据类型:Object +- 引用数据类型:Object -JS为我们提供了**三个包装类**: +JS 为我们提供了**三个包装类**: -- String():将基本数据类型字符串,转换为String对象。 +- String():将基本数据类型字符串,转换为 String 对象。 -- Number():将基本数据类型的数字,转换为Number对象。 +- Number():将基本数据类型的数字,转换为 Number 对象。 -- Boolean():将基本数据类型的布尔值,转换为Boolean对象。 +- Boolean():将基本数据类型的布尔值,转换为 Boolean 对象。 通过上面这这三个包装类,我们可以**将基本数据类型的数据转换为对象**。 - 代码举例: ```javascript - var num = new Number(3); +let str1 = 'qianguyihao'; +let str2 = new String('qianguyihao'); - var str = new String("hello"); +let num = new Number(3); - var bool = new Boolean(true); +let bool = new Boolean(true); - console.log(typeof num); // 打印结果:object +console.log(typeof str1); // 打印结果:string +console.log(typeof str2); // 注意,打印结果:object ``` - **需要注意的是**:我们在实际应用中不会使用基本数据类型的对象。如果使用基本数据类型的对象,在做一些比较时可能会带来一些**不可预期**的结果。 比如说: ```javascript - var boo1 = new Boolean(true); - var boo2 = new Boolean(true); +var boo1 = new Boolean(true); +var boo2 = new Boolean(true); - console.log(boo1 === boo2); // 打印结果竟然是:false +console.log(boo1 === boo2); // 打印结果竟然是:false ``` - 再比如说: ```javascript var boo3 = new Boolean(false); if (boo3) { - console.log('qianguyihao'); // 这行代码竟然执行了 + console.log('qianguyihao'); // 这行代码竟然执行了 } ``` +显然,使用 typeof 去检查类型时, ## 基本数据类型不能绑定属性和方法 @@ -65,40 +62,40 @@ if (boo3) { 注意,基本数据类型`string`是**无法绑定属性和方法**的。比如说: ```javascript - var str = "qianguyihao"; +var str = 'qianguyihao'; - str.aaa = 12; - console.log(typeof str); //打印结果为:string - console.log(str.aaa); //打印结果为:undefined +str.aaa = 12; +console.log(typeof str); //打印结果为:string +console.log(str.aaa); //打印结果为:undefined ``` 上方代码中,当我们尝试打印`str.aaa`的时候,会发现打印结果为:undefined。也就是说,不能给 `string` 绑定属性和方法。 -当然,我们可以打印str.length、str.indexOf("m")等等。因为这两个方法的底层做了数据类型转换(**临时**将 `string` 字符串转换为 `String` 对象,然后再调用内置方法),也就是我们在上一篇文章中讲到的**包装类**。 +当然,我们可以打印 str.length、str.indexOf("m")等等。因为这两个方法的底层做了数据类型转换(**临时**将 `string` 字符串转换为 `String` 对象,然后再调用内置方法),也就是我们在上一篇文章中讲到的**包装类**。 **2、引用数据类型:** 引用数据类型`String`是可以绑定属性和方法的。如下: ```javascript - var strObj = new String("smyhvae"); - strObj.aaa = 123; - console.log(strObj); - console.log(typeof strObj); //打印结果:Object - console.log(strObj.aaa); +var strObj = new String('smyhvae'); +strObj.aaa = 123; +console.log(strObj); +console.log(typeof strObj); //打印结果:Object +console.log(strObj.aaa); ``` 打印结果: ![](http://img.smyhvae.com/20180202_1351.png) -内置对象Number也有一些自带的方法,比如: +内置对象 Number 也有一些自带的方法,比如: -- Number.MAX_VALUE; +- Number.MAX_VALUE; -- Number.MIN_VALUE; +- Number.MIN_VALUE; -内置对象Boolean也有一些自带的方法,但是用的不多。 +内置对象 Boolean 也有一些自带的方法,但是用的不多。 ## 基本包装类型【重要】 @@ -109,7 +106,6 @@ if (boo3) { ```js var str = 'qianguyihao'; console.log(str.length); // 打印结果:11 - ``` 比如,上面的代码,执行顺序是这样的: @@ -131,19 +127,15 @@ temp = null; 在底层,字符串是以字符数组的形式保存的。代码举例: ```javascript - var str = "smyhvae"; - console.log(str.length); // 获取字符串的长度 - console.log(str[2]); // 获取字符串中的第2个字符 +var str = 'smyhvae'; +console.log(str.length); // 获取字符串的长度 +console.log(str[2]); // 获取字符串中的第2个字符 ``` -上方代码中,`smyhvae`这个字符串在底层是以`["s", "m", "y", "h", "v", "a", "e"]`的形式保存的。因此,我们既可以获取字符串的长度,也可以获取指定索引index位置的单个字符。这很像数组中的操作。 - - +上方代码中,`smyhvae`这个字符串在底层是以`["s", "m", "y", "h", "v", "a", "e"]`的形式保存的。因此,我们既可以获取字符串的长度,也可以获取指定索引 index 位置的单个字符。这很像数组中的操作。 再比如,String 对象的很多内置方法,也可以直接给字符串用。此时,也是临时将字符串转换为 String 对象,然后再调用内置方法。 - - ## 我的公众号 想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。 @@ -151,7 +143,3 @@ temp = null; 扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: ![](http://img.smyhvae.com/20190101.png) - - - - diff --git a/04-JavaScript基础/24-对象的基本操作.md b/04-JavaScript基础/24-对象的基本操作.md index 7afa70e..f32d912 100644 --- a/04-JavaScript基础/24-对象的基本操作.md +++ b/04-JavaScript基础/24-对象的基本操作.md @@ -150,12 +150,14 @@ if (obj.name) { } ``` -## 遍历对象:for in +## 遍历对象的属性名:for in + +> `for in`主要用于遍历对象,不建议用来遍历数组。 语法: ```javascript -for (var 变量 in 对象名) { +for (const 变量 in 对象名) { } ``` @@ -180,9 +182,9 @@ for (var key in obj) {