Skip to content

Commit a96aef8

Browse files
committed
Merge branch 'feature/Day_6_contents' into develop
2 parents e43cdcd + 2e31dbf commit a96aef8

12 files changed

+820
-35
lines changed

.markdownlint.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"MD013": false,
3+
"MD026": false,
4+
"MD028": false,
5+
"MD036": false
6+
}

README.md

+41-26
Original file line numberDiff line numberDiff line change
@@ -85,41 +85,56 @@ A lot of information has been written about JavaScript and EcmaScript since both
8585
- The Iterable and the Iterator Protocol
8686
- Preliminary Practice
8787
- Exercises
88-
- DAY 6
88+
- [DAY 6](/day_06.md)
8989
- Functions
90-
- <https://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions>
91-
- <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions>
92-
- <https://github.com/Jaxolotl-Didactic-Lab/useful-info/blob/develop/functions%20-%20generators%20-%20scope%20-%20closure.md>
93-
- First-Class Citizens
94-
- ..
95-
- .. good practices
96-
- this Keyword
97-
- <https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/this%20%26%20object%20prototypes/ch1.md>
98-
- <https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/this%20%26%20object%20prototypes/ch2.md>
90+
- General Definition
91+
- Function declaration (function statement)
92+
- Function expression
93+
- Function constructor
94+
- Constructor vs declaration vs expression
95+
- Properties of the Function object in the prototype chain
96+
- Arity & formal parameters
97+
- Formal parameters and the `arguments` thing
98+
- Functions as properties of an object
99+
- IIFE
100+
- Pure functions
101+
- Side Effects
102+
- Execution context
103+
- Types of Execution Context (executable code)
104+
- Execution Stack
105+
- How Execution Context is defined?
106+
- Articles and books used for this section
107+
- Scope
108+
- Part of a program
109+
- ECMAScript definition
110+
- General definitions
111+
- Examples
112+
- Hoisting
113+
- Closure
114+
- General definition
115+
- Examples
116+
- Can we Cheat Scope?
117+
- ev[a|i]l
118+
- with
119+
- Relative Concepts Readings
120+
- Preliminary practice
121+
- Exercises
122+
- DAY 7
123+
- `this` Keyword
124+
- <https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch1.md>
125+
- <https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch2.md>
99126
- <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this>
100127
- BIND
101128
- APPLY
102129
- CALL
103-
- ..
104-
- .. good practices
105-
- Execution context
106-
- <https://github.com/Jaxolotl-Didactic-Lab/useful-info/blob/develop/execution-context.md>
107-
- ...
108-
- .. good practices
109-
- Scope
110-
- <https://github.com/Jaxolotl-Didactic-Lab/useful-info/blob/develop/scope.md>
111-
- ES5 hoisting
112-
- .. good practices
113-
- DAY 7
130+
- Strict mode
131+
- What happens on strict mode?
132+
- Semantic Differences
114133
- Arrow Functions
115134
- ...
116135
- ...
117136
- .. good practices
118-
- Closure
119-
- <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures>
120-
- IIFE
121-
- .. good practices
122-
- Generators & Iterators
137+
- Generators
123138
- ..
124139
- ..
125140
- .. good practices

day_01.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ To be fair we should go back to the evolution of ES.
9595
9696
What is important to understand is that **until ES6** all versions were **ordinal versioned** and the release pace was **freaking slow** mostly because the browsers weren't decoupled from the OS and therefore any change should be integrated at OS releasing scale.
9797

98-
Since ES6 - AKA ES2015, a year-based schema was introduced to reflect and support the fast development pace of JavaScript particularly impulsed by the decoupling of the Web Browsers from OS first but also due to the expansive adoption of the language and the growth of its use beyond "just swapping a button img on rollover" ( A very interesting article about that was written by **Matthew MacDonald**, [read it here ](https://medium.com/young-coder/how-javascript-grew-up-and-became-a-real-language-17a0b948b77f)).
98+
Since ES6 - AKA ES2015, a year-based schema was introduced to reflect and support the fast development pace of JavaScript particularly impulsed by the decoupling of the Web Browsers from OS first but also due to the expansive adoption of the language and the growth of its use beyond "just swapping a button img on rollover" (A very interesting article about that was written by **Matthew MacDonald**, [read it here](https://medium.com/young-coder/how-javascript-grew-up-and-became-a-real-language-17a0b948b77f)).
9999

100-
From ES2015 the standardization process started behaving as a **living standard** hence not tight to structured cuts but by an release based on continuous consensus and progressive adoption.
101-
In order to keep the pace, several improvements were required under the hood to keep it stable and scalable. Browsers will then adopt the new features based on their own pace, which left on the engineering side the responsibility for maintaining the backward compatibility, what led to an extensive growth of techniques such as [polyfilling](https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/es%3Anext%20%26%20beyond/ch1.md#shimspolyfills) and [transpiling](https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/es%3Anext%20%26%20beyond/ch1.md#transpiling)
100+
From ES2015 the standardization process started behaving as a **living standard** hence not tied to structured cuts but by an release based on continuous consensus and progressive adoption.
101+
In order to keep the pace, several improvements were required under the hood to keep it stable and scalable. Browsers will then adopt the new features based at their own pace, which left on the engineering side the responsibility for maintaining the backward compatibility, what led to an extensive growth of techniques such as [polyfilling](https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/es%3Anext%20%26%20beyond/ch1.md#shimspolyfills) and [transpiling](https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/es%3Anext%20%26%20beyond/ch1.md#transpiling)
102102

103103
Tons of publications can be found online comparing both standards; you can read them online. I'd suggest to start with clean unbiased documents such as the [ecma-262 5.1](https://www.ecma-international.org/ecma-262/5.1) and [ecma-262 6.0](https://www.ecma-international.org/ecma-262/6.0/) ... but some find that too tedious :D ... you can check also this [ECMAScript 6 — New Features: Overview & Comparison](http://es6-features.org/) by Ralf S. Engelschall which I find very interesting, or jump into the excellent [You Don't Know JS book series](https://github.com/getify/You-Dont-Know-JS/) by Kyle Simpson, especially on the dedicated book [ES6 & Beyond](https://github.com/getify/You-Dont-Know-JS/tree/2nd-ed/es:next%20%26%20beyond) by Kyle Simpson
104104

day_02.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ a = b * 2;
122122

123123
is built by [4 simpler expressions](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/up%20%26%20going/ch1.md#expressions).
124124

125-
You can learn more from his [YDKJS - Types & Grammar](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/types%20%26%20grammar/ch5.md#statements--expressions) book online, also take a look at a particularly little known characteristic that [all Statements have Completion Values](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/types%20&%20grammar/ch5.md#statement-completion-values) ( yup, as many of us I learned this quite late :,( )
125+
You can learn more from his [YDKJS - Types & Grammar](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/types%20%26%20grammar/ch5.md#statements--expressions) book online, also take a look at a particularly little known characteristic that [all Statements have Completion Values](https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/types%20%26%20grammar/ch5.md#statement-completion-values) ( yup, as many of us I learned this quite late :,( )
126126

127127
### Semantics
128128

@@ -216,10 +216,11 @@ If you want to dive into how operators are defined by the spec, there's a comple
216216
### Operators precedence
217217

218218
Just like in math, in computer programming there's a set of rules or conventions to define which procedure to perform first in order to evaluate an expression. Depending on the order we might have different results.
219-
Javascript is not an exception and we cas see this table very well explained at [MDN web Docs - Operator precedence](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence).
219+
Javascript is not an exception and we can see this table very well explained at [MDN web Docs - Operator precedence](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence).
220220

221221
### The case of the ... ( spread/rest "operator" )
222-
A new syntactic element was introduced in ES6 but surprisingly it's not listed as part of the operators but rather as a left-hand-side expression, specifically an assignment expression.
222+
223+
A new syntactic element was introduced in ES6 but surprisingly it's not listed as part of the operators but rather as a left-hand-side expression, specifically an assignment expression.
223224

224225
You can search for **SpreadElement** on the [spec](http://www.ecma-international.org/ecma-262/6.0/) to see how it behaves depending on the context.
225226

day_05.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ But they might be a little harsh at this moment, why don't we take a look at MDN
117117
> - `value` - any JavaScript value returned by the iterator. Can be omitted when `done` is `true`.
118118
>
119119
> The `next` method always has to return an object with appropriate properties including `done` and `value`. If a non-object value gets returned (such as `false` or `undefined`), a TypeError ("iterator.next() returned a non-object value") will be thrown.
120-
>
120+
>
121121
> Source: [MDN - The iterator protocol](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol)
122122
123123
Essentially this protocols defines and interface to iterate in a consistent way across implementations opening the door for you to define your own iterables taking control of the iteration steps in a super granular way.

0 commit comments

Comments
 (0)