Comments (8)
https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch2.md
Line 23
This example introduces an unnecessary level of indirection with declarations ordered as a, c, b
.
function foo(a) {
function bar(c) {
console.log(a, b, c);
}
var b = a * 2;
bar(b * 3);
}
foo(2); // 2, 4, 12
It could be more simply written like so:
function foo(a) {
var b = a * 2;
function bar(c) {
console.log(a, b, c);
}
bar(b * 3);
}
foo(2); // 2, 4, 12
Yes hoisting could be considered an issue, but there is no need to worry about it here since it has yet to be introduced. This order allows the reader to follow the a, b, c
declarations instead of a, c, b
.
from you-dont-know-js.
https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch2.md
Cheating with eval
:
Is it worth mentioning Function constructor declarations here? They perform a flavor of eval and can produce global variables.
new Function('x = "global carnage!";');
from you-dont-know-js.
https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch3.md
While discussing passing vars to IIFE's it might be nice to mention the undefined
pattern since it is quite prevalent and likely to be encountered in the wild.
(function (global, undefined) {
var a;
if (a === undefined) {
console.log('nothing here!');
}
})(window);
from you-dont-know-js.
https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch4.md
Line 92
I believe you intended this:
function foo() {
var a;
console.log(a); // undefined
a = 2;
}
foo();
from you-dont-know-js.
https://github.com/eborden/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch5.md
I'm not seeing the let/loop behavior that you are prescribing in the latest IE. This could be an implementation detail.
for(let i = 0; i < 4; i++){
let j = i;
setTimeout(function () {
alert(i); // 4 4 4 4
alert(j); // 0 1 2 3
}, 10);
}
from you-dont-know-js.
Note, tested the previous example in the latest FF and had the same results.
from you-dont-know-js.
None of the browsers are conforming (yet) on the for (let x = ...
behavior of binding per iteration. Here's a mozilla bug tracking their (dormant) attempt to come into alignment with the spec on this topic.
from you-dont-know-js.
Thanks for all the great feedback. I've finished posting revisions that take your comments into account.
from you-dont-know-js.
Related Issues (20)
- Yeah but you have the NITDA
- Backward and forward compatibility in Javascript specification HOT 2
- Stale Closure HOT 1
- Get Started - Appendix B: Bug in Proposed Solution HOT 3
- Add simplified Chinese translation to the 2ed HOT 4
- Misspellings detected by `typos` HOT 1
- What's this
- I think the condition in the if statement should be "(new.target === Point2d)" now it is "(new.target === Point2)" HOT 1
- Unable to see images on generated epub HOT 3
- The lexical binding of an arrow-function cannot be overridden (even with `new`!) HOT 4
- Value Type - Primitive HOT 7
- Reordering of "Why Closure?" and "An Alternative Perspective" in the toc HOT 1
- Hint at what coercion is being done HOT 2
- Promise.prototype.finally was introduced in ES2018, not E2019 HOT 1
- IsLessThan wrong output HOT 1
- Does `module` need quotes? HOT 1
- Copy right policy about teaching your book HOT 2
- Superficial explanation of Modules In Chapter 2 of Book 1 (2nd edition) HOT 4
- `add10To` vs `addTo10` HOT 2
- YDKJSY, coercion practice question HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from you-dont-know-js.