diff --git a/04-JavaScript基础/02-变量.md b/04-JavaScript基础/02-变量.md index 8636082..800abc3 100644 --- a/04-JavaScript基础/02-变量.md +++ b/04-JavaScript基础/02-变量.md @@ -93,9 +93,9 @@ PS:**在JavaScript中,永远都是用var来定义变量**(在ES6 之前) 声明一个变量并赋值, 我们称之为**变量的初始化**。 -## 变量的语法扩展 +## 变量声明和赋值的补充 -### 更改变量的值 +### 修改变量的值 一个变量被重新复赋值后,它原有的值就会被覆盖,变量值将以最后一次赋的值为准。 @@ -119,7 +119,7 @@ console.log(a); // 打印结果:110。因为 110 覆盖了 100 var name = '千古壹号', age = 27, number = 100; ``` -### 变量声明的特殊情况 +### 变量声明的几种特殊情况 变量建议先声明,再使用。否则可能会报错。具体如下。 @@ -158,14 +158,6 @@ console.log(a); // 会报错 ## 变量的命名规范 -变量名有命名规范:只能由英语字母、数字、下划线、美元符号$构成,且不能以数字开头,并且不能是JavaScript保留字。 - -下列的单词,叫做保留字,就是说不允许当做变量名,不用记: - -``` -abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto -implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile -``` 大写字母是可以使用的,并且大小写敏感。也就是说A和a是两个变量。 @@ -174,24 +166,27 @@ implements、import、int、interface、long、native、package、private、prot var a = 888; //变量2 ``` -我们来整理一下**变量的命名规则**: +我们来整理一下**变量的命名规范**: -1.建议用驼峰命名规则:getElementById/matherAndFather/aaaOrBbbAndCcc +- 只能由字母(A-Z、a-z)、数字(0-9)、下划线(_)、美元符( $ )组成 -2.变量命名必须以字母或是下标符号”_”或者”$”为开头。 - -3.变量名长度不能超过255个字符。 - -4.变量名中不允许使用空格,首个字不能为数字。 - -5.不用使用脚本语言中保留的**关键字**及**保留字**作为变量名。 - -6.变量名区分大小写(javascript是区分大小写的语言)。 - -7.汉语可以作为变量名。但是不建议使用,因为 low。 +- 不能以数字开头。也就是说,必须以字母(A-Z、a-z)、下划线(_)或者美元符( $ )开头。变量名中不允许出现空格。 -## 标识符 +- 不用使用 JS 语言中保留的「关键字」和「保留字」作为变量名。 + + +- 建议用驼峰命名规则。比如getElementById、matherAndFather、aaaOrBbbAndCcc + +- 变量名会区分大小写(javascript 是区分大小写的语言)。 + +- 变量名长度不能超过255个字符。 + +- 汉语可以作为变量名。但是不建议使用,因为 low。 + +## 标识符、关键字、保留字 + +### 标识符 **标识符**:在JS中所有的可以由我们**自主命名**的都可以称之为标识符。 @@ -199,13 +194,27 @@ implements、import、int、interface、long、native、package、private、prot **标识符的命名规则**和变量的命令规则是一样的。看上面一段就可以了。 -重点要注意的是:标识符不能使用脚本语言中保留的**关键字**及**保留字**。如下。 +同样,标识符不能使用脚本语言中保留的**关键字**及**保留字**。如下。 -**关键字**: +### 关键字 ![](http://img.smyhvae.com/20180714_1421.png) -**保留字**: +### 保留字 + +下列的单词,叫做保留字,不允许当做变量名,不用记: + +``` +abstract、boolean、byte、char、class、const、 + +debugger、double、enum、export、extends、final、float、goto + +implements、import、int、interface、long、native、package、 + +private、protected、public、short、static、super、synchronized、throws、 + +transient、volatile +``` ![](http://img.smyhvae.com/20180714_1422.png) @@ -215,439 +224,23 @@ implements、import、int、interface、long、native、package、private、prot ![](http://img.smyhvae.com/20180714_1423.png) -## 变量的数据类型 +## 举例 -变量里面能够存储数字、字符串等。变量会自动的根据存储内容的类型不同,来决定自己的类型。 +**举例1**:交换两个变量的值 -**在JS中一共有六种数据类型**: - -- **基本数据类型(值类型)**:String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。 - -- **引用数据类型(引用类型)**:Object 对象。 - -注意:内置对象function、Array、Date、RegExp、Error等都是属于Object类型。也就是说,除了那五种基本数据类型之外,其他的,都称之为 Object类型。 - -> 面试问:引用数据类型有几种? - -> 面试答:只有一种,即 Object 类型。 - -**数据类型之间最大的区别**: - -- 基本数据类型:参数赋值的时候,传数值。 - -- 引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。 - -接下来,我们详细讲一下基本数据类型。 - -## String 字符串 - -来看个示例。现有如下代码: +代码实现: ```javascript - var a = "abcde"; - var b = "生命壹号"; - var c = "123123"; - var d = "哈哈哈哈哈"; - var e = ""; //空字符串 +var a1 = 100; +var a2 = 200; - console.log(typeof a); - console.log(typeof b); - console.log(typeof c); - console.log(typeof d); - console.log(typeof e); +var temp; + +temp = a1; +a1 = a2; +a2 = temp; ``` -控制台输出如下: - -``` - string - string - string - string - string -``` - -注意事项: - -(1)在JS中,字符串需要使用引号引起来。使用双引号或单引号都可以,但是不要混着用。比如下面这样写是不可以的: - -```javascript -var str = 'hello"; -``` - -(2)引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。但是单引号里可以嵌套双引号。 - -(3)**转义字符**:在字符串中我们可以使用`\`作为转义字符,当表示一些特殊符号时可以使用`\`进行转义。 - - -- `\"` 表示 `"` - -- `\'` 表示 `'` - -- `\n` 表示换行 - -- `\r` 表示回车 - -- `\t` 表示制表符 - -- `\b` 表示空格 - -- `\\` 表示`\` - -举例: - -```javascript - var str1 = "我说:\"今天\t天气真不错!\""; - var str2 = "\\\\\\"; - - console.log(str1); - console.log(str2); -``` - - -上方代码的打印结果: - -``` - 我说:"今天 天气真不错!" - \\\ -``` - -将其他数值转换为字符串有三种方式: - -- 拼串 - -- toString() - -- String() - - -### 补充知识:typeof 运算符 - -`typeof()`表示“**获取变量的类型**”,返回的是小写,语法为: - -``` -typeof 变量 -``` - -**返回结果**: - -- `typeof 数值`的返回结果:number - -- `typeof 字符串`的返回结果:string - -- `typeof 布尔型`的返回结果:boolean - -- `typeof undefined`的返回结果:undefined - -- `typeof null`的返回结果:object - -在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。 - - -## 数值型:Number - -在JS中所有的数值都是Number类型,包括整数和浮点数(小数)。 - -```javascript - var a = 100; //定义了一个变量a,并且赋值100 - console.log(typeof a); //输出a变量的类型 -``` - -上方代码的输出结果为: - -``` -number -``` - - -**数值范围:** - -由于内存的限制,ECMAScript 并不能保存世界上所有的数值。 - -- 最大值:`Number.MAX_VALUE`,这个值为: 1.7976931348623157e+308 - -- 最小值:`Number.MIN_VALUE`,这个值为: 5e-324 - -如果使用Number表示的变量超过了最大值,则会返回Infinity。 - -- 无穷大(正无穷):Infinity - -- 无穷小(负无穷):-Infinity - -注意:`typeof Infinity`的返回结果是number。 - - -**NaN和isNaN()函数:** - -(1)NaN:是一个特殊的数字,表示Not a Number,非数值。比如: - -```javascript - console.log("abc" / 18); //结果是NaN - - console.log("abc" * "abcd"); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是NaN -``` - -注意:`typeof NaN`的返回结果是number。 - -Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,包括 NaN 本身。 - -(2)isNaN() :任何不能被转换为数值的值,都会让这个函数返回 true。 - -```javascript - isNaN(NaN);// true - isNaN("blue"); // true - isNaN(123); // false - -``` - -**浮点数的运算**: - -在JS中,整数的运算**基本**可以保证精确;但是**小数的运算,可能会得到一个不精确的结果**。所以,千万不要使用JS进行对精确度要求比较高的运算。 - -如下: - -```javascript - var a = 0.1 + 0.2; - console.log(a); //打印结果:0.30000000000000004 -``` - -上方代码中,打印结果并不是0.3,而是0.30000000000000004。 - -我们知道,所有的运算都要转换成二进制去计算,然而,二进制是无法精确表示1/10的。因此存在小数的计算不精确的问题。 - -### 连字符和加号的区别 - -键盘上的`+`可能是连字符,也可能是数字的加号。如下: - -``` -console.log("我" + "爱" + "你"); //连字符,把三个独立的汉字,连接在一起了 -console.log("我+爱+你"); //原样输出 -console.log(1+2+3); //输出6 -``` - -输出: - -``` -我爱你 -我+爱+你 -6 -``` - -**总结**:如果加号两边**都是**数值,此时是加。否则,就是连字符(用来连接字符串)。 - -举例1: - -```javascript -var a = "1"; -var b = 2; -console.log(a + b); -``` - -控制台输出: - -``` -12 -``` - -举例2: - -``` -var a = 1; -var b = 2; -console.log("a" + b); //"a"就不是变量了!所以就是"a"+2 输出a2 - -``` - -控制台输出: - -``` -a2 -``` - -于是我们明白了,在变量中加入字符串进行拼接,可以被同化为字符串。【重要】 - - -### 隐式转换 - -我们知道,`"2"+1`得到的结果其实是字符串,但是`"2"-1`得到的结果却是数值1,这是因为计算机自动帮我们进行了“**隐式转换**”。 - -也就是说,`-`、`*`、`/`、`%``这几个符号会自动进行隐式转换。例如: - -```javascript -var a = "4" + 3 - 6; -console.log(a); -``` - -输出结果: - -```javascript -37 -``` - -虽然程序可以对`-`、`*`、`/`、`%``这几个符号自动进行“隐式转换”;但作为程序员,我们最好自己完成转换,方便程序的可读性。 - - -## 布尔值:Boolean - -true 和 false。主要用来做逻辑判断。 - -布尔值直接使用就可以了,千万不要加上引号。 - -代码: - -```javascript -var a = true; -console.log(typeof a); -``` - -控制台输出结果: - -``` -boolean -``` - - -## null和undefined - -### `null`:空值 - -专门用来表示一个为空的**对象**(例如:`var a = null`)。注意,专门用来表示**空对象**。 - - -- Null类型的值只有一个,就是null。比如:`var a = null`。 - - -- 使用 typeof 检查一个null值时,会返回object。 - -### `undefined`:未定义 - -**声明**了一个变量,但是没有**赋值**(例如:`var a;`),此时它的值就是undefined。 - -- Undefined类型的值只有一个,就是undefind - -- 使用 type of 检查一个undefined时,会返回undefined。 - -null和undefined有最大的相似性。看看null == undefined的结果(true)也就更加能说明这点。 - -但是null === undefined的结果(false)。它们虽然相似,但还是有区别的,其中一个区别是:和数字运算时,10 + null结果为:10;10 + undefined结果为:NaN。 - -- 任何数据类型和undefined运算都是NaN; - -- 任何值和null运算,null可看做0运算。 - -## 变量值的传递(赋值) - -语句: - -``` -a = b; -``` - -把b的值赋给a,b不变。 - -将等号右边的值,赋给左边的变量;等号右边的变量,值不变。 - -来做几个题目。 - -举例1: - -``` - //a b c -var a = 1; //1 -var b = 2; //1 2 -var c = 3; //1 2 3 -a = b + c; //5 2 3 -b = c - a; //5 -2 3 -c = a * b; //5 -2 -10 -console.log(a); -console.log(b); -console.log(c); -``` - -输出: - -``` -5 --2 --10 -``` - -举例2: - -``` - //a b c -var a = 1; -var b = 2; -var c = 3; //1 2 3 -a = a + b; //3 2 3 -b = b + a; //3 5 3 -c = c + b; //3 5 8 -console.log(a); //3 -console.log(b); //5 -console.log(c); //8 -``` - -输出: - -``` -3 -5 -8 -``` - -举例3: - -``` - //a b -var a = "1"; -var b = 2; //"1" 2 -a = a + b; //"12" 2 -b = b + a; //"12" "212" -console.log(a); //输出12 -console.log(b); //输出212 -``` - -输出: - -``` -12 -212 -``` - -举例4: - -``` - //a b -var a = "1"; -var b = 2; -a = b + a; //"21" 2 -b = b + a; //"21" "221" -console.log(a); //21 -console.log(b) //221 -``` - - -效果: - -``` -21 -221 -``` - -举例5:(这个例子比较特殊,字符串减去数字) - -``` -var a = "3"; -var b = 2; -console.log(a-b); -``` - - -效果:(注意,字符串 - 数值 = 数值) - -``` -1 -``` ## 我的公众号 diff --git a/04-JavaScript基础/03-变量的数据类型.md b/04-JavaScript基础/03-变量的数据类型.md new file mode 100644 index 0000000..86e7474 --- /dev/null +++ b/04-JavaScript基础/03-变量的数据类型.md @@ -0,0 +1,465 @@ + +## 变量的数据类型 + +### 为什么需要数据类型 + +在计算机中,不同的数据所需占用的存储空间不同,为了充分利用存储空间,于是定义了不同的数据类型。而且,不同的数据类型,寓意也不同。 + +我们都知道,无论这个变量是字符串类型,还是数字类型,我们都可以直接用 `var` 去定义它。比如: + +```javascript +var a = 'hello word'; + +var b = 123; +``` + +为什么可以这样做呢?这是因为:JavaScript 是一种「弱类型语言」,或者说是一种「动态语言」,这意味着不需要提前声明变量的类型,在程序运行过程中,类型会自动被确定。 + +**JS 的变量数据类型,是在程序运行的过程中,根据等号右边的值来确定的**。而且,变量的数据类型是可以变化的。比如说: + +```javascript +var name = 'qianguyihao'; + +name = 123; // 强制将变量 name 修改为 数字类型 +``` + +### JS中一共有六种数据类型 + +- **基本数据类型(值类型)**:String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。 + +- **引用数据类型(引用类型)**:Object 对象。 + +注意:内置对象function、Array、Date、RegExp、Error等都是属于Object类型。也就是说,除了那五种基本数据类型之外,其他的,都称之为 Object类型。 + +> 面试问:引用数据类型有几种? + +> 面试答:只有一种,即 Object 类型。 + +**数据类型之间最大的区别**: + +- 基本数据类型:参数赋值的时候,传数值。 + +- 引用数据类型:参数赋值的时候,传地址(修改的同一片内存空间)。 + +今天这篇文章,我们详细讲一下基本数据类型。 + +## String 字符串 + +来看个示例。现有如下代码: + +```javascript + var a = "abcde"; + var b = "生命壹号"; + var c = "123123"; + var d = "哈哈哈哈哈"; + var e = ""; //空字符串 + + console.log(typeof a); + console.log(typeof b); + console.log(typeof c); + console.log(typeof d); + console.log(typeof e); +``` + +控制台输出如下: + +``` + string + string + string + string + string +``` + +注意事项: + +(1)在JS中,字符串需要使用引号引起来。使用双引号或单引号都可以,但是不要混着用。比如下面这样写是不可以的: + +```javascript +var str = 'hello"; +``` + +(2)引号不能嵌套:双引号里不能再放双引号,单引号里不能再放单引号。但是单引号里可以嵌套双引号。 + +(3)**转义字符**:在字符串中我们可以使用`\`作为转义字符,当表示一些特殊符号时可以使用`\`进行转义。 + + +- `\"` 表示 `"` + +- `\'` 表示 `'` + +- `\n` 表示换行 + +- `\r` 表示回车 + +- `\t` 表示制表符 + +- `\b` 表示空格 + +- `\\` 表示`\` + +举例: + +```javascript + var str1 = "我说:\"今天\t天气真不错!\""; + var str2 = "\\\\\\"; + + console.log(str1); + console.log(str2); +``` + + +上方代码的打印结果: + +``` + 我说:"今天 天气真不错!" + \\\ +``` + +将其他数值转换为字符串有三种方式: + +- 拼串 + +- toString() + +- String() + + +### 补充知识:typeof 运算符 + +`typeof()`表示“**获取变量的类型**”,返回的是小写,语法为: + +``` +typeof 变量 +``` + +**返回结果**: + +- `typeof 数值`的返回结果:number + +- `typeof 字符串`的返回结果:string + +- `typeof 布尔型`的返回结果:boolean + +- `typeof undefined`的返回结果:undefined + +- `typeof null`的返回结果:object + +在JavaScript中,只要是数,就是 number 数值型的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是 number 类型的。 + + +## 数值型:Number + +在JS中所有的数值都是Number类型,包括整数和浮点数(小数)。 + +```javascript + var a = 100; //定义了一个变量a,并且赋值100 + console.log(typeof a); //输出a变量的类型 +``` + +上方代码的输出结果为: + +``` +number +``` + + +**数值范围:** + +由于内存的限制,ECMAScript 并不能保存世界上所有的数值。 + +- 最大值:`Number.MAX_VALUE`,这个值为: 1.7976931348623157e+308 + +- 最小值:`Number.MIN_VALUE`,这个值为: 5e-324 + +如果使用Number表示的变量超过了最大值,则会返回Infinity。 + +- 无穷大(正无穷):Infinity + +- 无穷小(负无穷):-Infinity + +注意:`typeof Infinity`的返回结果是number。 + + +**NaN和isNaN()函数:** + +(1)NaN:是一个特殊的数字,表示Not a Number,非数值。比如: + +```javascript + console.log("abc" / 18); //结果是NaN + + console.log("abc" * "abcd"); //按理说,字符串相乘是没有结果的,但如果你非要让JS去算,它就一定会给你一个结果。结果是NaN +``` + +注意:`typeof NaN`的返回结果是number。 + +Undefined和任何数值计算的结果为NaN。NaN 与任何值都不相等,包括 NaN 本身。 + +(2)isNaN() :任何不能被转换为数值的值,都会让这个函数返回 true。 + +```javascript + isNaN(NaN);// true + isNaN("blue"); // true + isNaN(123); // false + +``` + +**浮点数的运算**: + +在JS中,整数的运算**基本**可以保证精确;但是**小数的运算,可能会得到一个不精确的结果**。所以,千万不要使用JS进行对精确度要求比较高的运算。 + +如下: + +```javascript + var a = 0.1 + 0.2; + console.log(a); //打印结果:0.30000000000000004 +``` + +上方代码中,打印结果并不是0.3,而是0.30000000000000004。 + +我们知道,所有的运算都要转换成二进制去计算,然而,二进制是无法精确表示1/10的。因此存在小数的计算不精确的问题。 + +### 连字符和加号的区别 + +键盘上的`+`可能是连字符,也可能是数字的加号。如下: + +``` +console.log("我" + "爱" + "你"); //连字符,把三个独立的汉字,连接在一起了 +console.log("我+爱+你"); //原样输出 +console.log(1+2+3); //输出6 +``` + +输出: + +``` +我爱你 +我+爱+你 +6 +``` + +**总结**:如果加号两边**都是**数值,此时是加。否则,就是连字符(用来连接字符串)。 + +举例1: + +```javascript +var a = "1"; +var b = 2; +console.log(a + b); +``` + +控制台输出: + +``` +12 +``` + +举例2: + +``` +var a = 1; +var b = 2; +console.log("a" + b); //"a"就不是变量了!所以就是"a"+2 输出a2 + +``` + +控制台输出: + +``` +a2 +``` + +于是我们明白了,在变量中加入字符串进行拼接,可以被同化为字符串。【重要】 + + +### 隐式转换 + +我们知道,`"2"+1`得到的结果其实是字符串,但是`"2"-1`得到的结果却是数值1,这是因为计算机自动帮我们进行了“**隐式转换**”。 + +也就是说,`-`、`*`、`/`、`%``这几个符号会自动进行隐式转换。例如: + +```javascript +var a = "4" + 3 - 6; +console.log(a); +``` + +输出结果: + +```javascript +37 +``` + +虽然程序可以对`-`、`*`、`/`、`%``这几个符号自动进行“隐式转换”;但作为程序员,我们最好自己完成转换,方便程序的可读性。 + + +## 布尔值:Boolean + +true 和 false。主要用来做逻辑判断。 + +布尔值直接使用就可以了,千万不要加上引号。 + +代码: + +```javascript +var a = true; +console.log(typeof a); +``` + +控制台输出结果: + +``` +boolean +``` + + +## null和undefined + +### `null`:空值 + +专门用来表示一个为空的**对象**(例如:`var a = null`)。注意,专门用来表示**空对象**。 + + +- Null类型的值只有一个,就是null。比如:`var a = null`。 + + +- 使用 typeof 检查一个null值时,会返回object。 + +### `undefined`:未定义 + +**声明**了一个变量,但是没有**赋值**(例如:`var a;`),此时它的值就是undefined。 + +- Undefined类型的值只有一个,就是undefind + +- 使用 type of 检查一个undefined时,会返回undefined。 + +null和undefined有最大的相似性。看看null == undefined的结果(true)也就更加能说明这点。 + +但是null === undefined的结果(false)。它们虽然相似,但还是有区别的,其中一个区别是:和数字运算时,10 + null结果为:10;10 + undefined结果为:NaN。 + +- 任何数据类型和undefined运算都是NaN; + +- 任何值和null运算,null可看做0运算。 + +## 变量值的传递(赋值) + +语句: + +``` +a = b; +``` + +把b的值赋给a,b不变。 + +将等号右边的值,赋给左边的变量;等号右边的变量,值不变。 + +来做几个题目。 + +举例1: + +``` + //a b c +var a = 1; //1 +var b = 2; //1 2 +var c = 3; //1 2 3 +a = b + c; //5 2 3 +b = c - a; //5 -2 3 +c = a * b; //5 -2 -10 +console.log(a); +console.log(b); +console.log(c); +``` + +输出: + +``` +5 +-2 +-10 +``` + +举例2: + +``` + //a b c +var a = 1; +var b = 2; +var c = 3; //1 2 3 +a = a + b; //3 2 3 +b = b + a; //3 5 3 +c = c + b; //3 5 8 +console.log(a); //3 +console.log(b); //5 +console.log(c); //8 +``` + +输出: + +``` +3 +5 +8 +``` + +举例3: + +``` + //a b +var a = "1"; +var b = 2; //"1" 2 +a = a + b; //"12" 2 +b = b + a; //"12" "212" +console.log(a); //输出12 +console.log(b); //输出212 +``` + +输出: + +``` +12 +212 +``` + +举例4: + +``` + //a b +var a = "1"; +var b = 2; +a = b + a; //"21" 2 +b = b + a; //"21" "221" +console.log(a); //21 +console.log(b) //221 +``` + + +效果: + +``` +21 +221 +``` + +举例5:(这个例子比较特殊,字符串减去数字) + +``` +var a = "3"; +var b = 2; +console.log(a-b); +``` + + +效果:(注意,字符串 - 数值 = 数值) + +``` +1 +``` + + + +## 我的公众号 + +想学习**代码之外的技能**?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。 + +扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外: + +![](http://img.smyhvae.com/20200101.png) + diff --git a/04-JavaScript基础/03-typeof和变量的强制类型转换.md b/04-JavaScript基础/04-typeof和变量的强制类型转换.md similarity index 100% rename from 04-JavaScript基础/03-typeof和变量的强制类型转换.md rename to 04-JavaScript基础/04-typeof和变量的强制类型转换.md diff --git a/04-JavaScript基础/04-运算符.md b/04-JavaScript基础/08-运算符.md similarity index 100% rename from 04-JavaScript基础/04-运算符.md rename to 04-JavaScript基础/08-运算符.md diff --git a/04-JavaScript基础/05-流程控制语句:选择结构(if和switch).md b/04-JavaScript基础/09-流程控制语句:选择结构(if和switch).md similarity index 100% rename from 04-JavaScript基础/05-流程控制语句:选择结构(if和switch).md rename to 04-JavaScript基础/09-流程控制语句:选择结构(if和switch).md diff --git a/04-JavaScript基础/06-流程控制语句:循环结构(for和while).md b/04-JavaScript基础/10-流程控制语句:循环结构(for和while).md similarity index 100% rename from 04-JavaScript基础/06-流程控制语句:循环结构(for和while).md rename to 04-JavaScript基础/10-流程控制语句:循环结构(for和while).md diff --git a/04-JavaScript基础/07-对象简介和对象的基本操作.md b/04-JavaScript基础/11-对象简介和对象的基本操作.md similarity index 100% rename from 04-JavaScript基础/07-对象简介和对象的基本操作.md rename to 04-JavaScript基础/11-对象简介和对象的基本操作.md diff --git a/04-JavaScript基础/08-基本数据类型vs引用数据类型.md b/04-JavaScript基础/12-基本数据类型vs引用数据类型.md similarity index 100% rename from 04-JavaScript基础/08-基本数据类型vs引用数据类型.md rename to 04-JavaScript基础/12-基本数据类型vs引用数据类型.md diff --git a/04-JavaScript基础/09-函数.md b/04-JavaScript基础/13-函数.md similarity index 100% rename from 04-JavaScript基础/09-函数.md rename to 04-JavaScript基础/13-函数.md diff --git a/04-JavaScript基础/10-作用域.md b/04-JavaScript基础/14-作用域.md similarity index 100% rename from 04-JavaScript基础/10-作用域.md rename to 04-JavaScript基础/14-作用域.md diff --git a/04-JavaScript基础/11-预编译及变量提升详解.md b/04-JavaScript基础/15-预编译及变量提升详解.md similarity index 100% rename from 04-JavaScript基础/11-预编译及变量提升详解.md rename to 04-JavaScript基础/15-预编译及变量提升详解.md diff --git a/04-JavaScript基础/12-作用域链.md b/04-JavaScript基础/16-作用域链.md similarity index 100% rename from 04-JavaScript基础/12-作用域链.md rename to 04-JavaScript基础/16-作用域链.md diff --git a/04-JavaScript基础/13-this.md b/04-JavaScript基础/17-this.md similarity index 100% rename from 04-JavaScript基础/13-this.md rename to 04-JavaScript基础/17-this.md diff --git a/04-JavaScript基础/14-闭包.md b/04-JavaScript基础/18-闭包.md similarity index 100% rename from 04-JavaScript基础/14-闭包.md rename to 04-JavaScript基础/18-闭包.md