From bd2840d8acf72ce1cecb4733d06f9f873cfafacd Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Thu, 18 Apr 2019 18:24:22 +0800 Subject: [PATCH 1/7] Update destructuring.md --- docs/destructuring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index e587ed3..6af4b35 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -170,7 +170,7 @@ let [x = y, y = 1] = []; // ReferenceError: y is not defined ### 简介 -解构不仅可以用于数组,还可以用于对象。 +解构不仅可以用于数组,还可以用于对象。需要注意的是,对象的解构赋值只是一种浅拷贝。 ```javascript let { foo, bar } = { foo: 'aaa', bar: 'bbb' }; From 9c01ac75a738a6f6f4ac9881a0e0229caf279ce8 Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Thu, 18 Apr 2019 18:42:07 +0800 Subject: [PATCH 2/7] Update let.md --- docs/let.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/let.md b/docs/let.md index 741e876..973b1c4 100644 --- a/docs/let.md +++ b/docs/let.md @@ -73,6 +73,18 @@ for (let i = 0; i < 3; i++) { 上面代码正确运行,输出了 3 次`abc`。这表明函数内部的变量`i`与循环变量`i`不在同一个作用域,有各自单独的作用域。 +`let`声明变量不能出现在单行语句作用域中,在单行语句中使用`let`将会报错。 + +``` +// 报错 +if (true) + let a = 0; + +// 报错 +for (let i = 0; i < 3; i++) + let a = 0; +``` + ### 不存在变量提升 `var`命令会发生“变量提升”现象,即变量可以在声明之前使用,值为`undefined`。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。 @@ -195,6 +207,15 @@ function func() { let a = 10; let a = 1; } + +// for循环内外有三个不同的作用域,不报错 +function func() { + let arr = [1,2,3]; + let i = 4; + for(let i in arr){ + let i = 0; + } +} ``` 因此,不能在函数内部重新声明参数。 From abc7310f11ffcbca8c4fdcd27af5ce45098192d1 Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Wed, 8 May 2019 12:05:03 +0800 Subject: [PATCH 3/7] Update reflect.md --- docs/reflect.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/reflect.md b/docs/reflect.md index 0af5a1d..e97f16c 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -273,6 +273,7 @@ Reflect.deleteProperty(myObj, 'foo'); ``` 该方法返回一个布尔值。如果删除成功,或者被删除的属性不存在,返回`true`;删除失败,被删除的属性依然存在,返回`false`。 +如果第一个参数不是对象,`Reflect.deleteProperty`方法会报错。 ### Reflect.construct(target, args) @@ -290,6 +291,8 @@ const instance = new Greeting('张三'); const instance = Reflect.construct(Greeting, ['张三']); ``` +如果第一个参数不是函数,`Reflect.construct`方法会报错。 + ### Reflect.getPrototypeOf(obj) `Reflect.getPrototypeOf`方法用于读取对象的`__proto__`属性,对应`Object.getPrototypeOf(obj)`。 From 584ee0dc4769b747f1c72582005117690538d4a5 Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Wed, 8 May 2019 12:24:18 +0800 Subject: [PATCH 4/7] Update reflect.md --- docs/reflect.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reflect.md b/docs/reflect.md index e97f16c..396484c 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -256,7 +256,7 @@ var myObject = { Reflect.has(myObject, 'foo') // true ``` -如果第一个参数不是对象,`Reflect.has`和`in`运算符都会报错。 +如果第一个参数不是对象,`Reflect.has`方法会报错。 ### Reflect.deleteProperty(obj, name) From 7bad01cae610ec823ae2012450cbead3c45bd995 Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Wed, 8 May 2019 12:40:17 +0800 Subject: [PATCH 5/7] Update reflect.md --- docs/reflect.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reflect.md b/docs/reflect.md index 396484c..66439aa 100644 --- a/docs/reflect.md +++ b/docs/reflect.md @@ -511,6 +511,8 @@ Reflect.ownKeys(myObject) // ['foo', 'bar', Symbol(baz), Symbol(bing)] ``` +如果第一个参数不是对象,`Reflect.ownKeys`方法会报错。 + ## 实例:使用 Proxy 实现观察者模式 观察者模式(Observer mode)指的是函数自动观察数据对象,一旦对象有变化,函数就会自动执行。 From aaf0750fd4846feb32774aa62b0b83c37e5bdb3a Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Wed, 8 May 2019 12:48:31 +0800 Subject: [PATCH 6/7] Update let.md --- docs/let.md | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/docs/let.md b/docs/let.md index 3c03090..08dc2b0 100644 --- a/docs/let.md +++ b/docs/let.md @@ -73,18 +73,6 @@ for (let i = 0; i < 3; i++) { 上面代码正确运行,输出了 3 次`abc`。这表明函数内部的变量`i`与循环变量`i`不在同一个作用域,有各自单独的作用域。 -`let`声明变量不能出现在单行语句作用域中,在单行语句中使用`let`将会报错。 - -``` -// 报错 -if (true) - let a = 0; - -// 报错 -for (let i = 0; i < 3; i++) - let a = 0; -``` - ### 不存在变量提升 `var`命令会发生“变量提升”现象,即变量可以在声明之前使用,值为`undefined`。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。 @@ -207,15 +195,6 @@ function func() { let a = 10; let a = 1; } - -// for循环内外有三个不同的作用域,不报错 -function func() { - let arr = [1,2,3]; - let i = 4; - for(let i in arr){ - let i = 0; - } -} ``` 因此,不能在函数内部重新声明参数。 From 16ecbb938dca17389ad8c15896195e57e63c3f48 Mon Sep 17 00:00:00 2001 From: bigbird231 <396016240@qq.com> Date: Wed, 8 May 2019 12:49:04 +0800 Subject: [PATCH 7/7] Update destructuring.md --- docs/destructuring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/destructuring.md b/docs/destructuring.md index 6af4b35..e587ed3 100644 --- a/docs/destructuring.md +++ b/docs/destructuring.md @@ -170,7 +170,7 @@ let [x = y, y = 1] = []; // ReferenceError: y is not defined ### 简介 -解构不仅可以用于数组,还可以用于对象。需要注意的是,对象的解构赋值只是一种浅拷贝。 +解构不仅可以用于数组,还可以用于对象。 ```javascript let { foo, bar } = { foo: 'aaa', bar: 'bbb' };