Merge remote-tracking branch 'adambard/master'

This commit is contained in:
Jacob Ward 2015-10-27 22:03:06 -06:00
commit 011c0b5fc7
9 changed files with 28 additions and 13 deletions

View File

@ -16,9 +16,14 @@ JavaScript isn't just limited to web browsers, though: Node.js, a project that
provides a standalone runtime for Google Chrome's V8 JavaScript engine, is provides a standalone runtime for Google Chrome's V8 JavaScript engine, is
becoming more and more popular. becoming more and more popular.
JavaScript has a C-like syntax, so if you've used languages like C or Java,
a lot of the basic syntax will already be familiar. Despite this, and despite
the similarity in name, JavaScript's object model is significantly different to
Java's.
```js ```js
// Comments are like C's. Single-line comments start with two slashes, // Single-line comments start with two slashes.
/* and multiline comments start with slash-star /* Multiline comments start with slash-star,
and end with star-slash */ and end with star-slash */
// Statements can be terminated by ; // Statements can be terminated by ;
@ -36,7 +41,7 @@ doStuff()
// JavaScript has one number type (which is a 64-bit IEEE 754 double). // JavaScript has one number type (which is a 64-bit IEEE 754 double).
// Doubles have a 52-bit mantissa, which is enough to store integers // Doubles have a 52-bit mantissa, which is enough to store integers
// up to about 9✕10¹⁵ precisely. // up to about 9✕10¹⁵ precisely.
3; // = 3 3; // = 3
1.5; // = 1.5 1.5; // = 1.5
@ -136,7 +141,7 @@ undefined; // used to indicate a value is not currently present (although
// character. // character.
var someVar = 5; var someVar = 5;
// if you leave the var keyword off, you won't get an error... // If you leave the var keyword off, you won't get an error...
someOtherVar = 10; someOtherVar = 10;
// ...but your variable will be created in the global scope, not in the scope // ...but your variable will be created in the global scope, not in the scope
@ -145,7 +150,7 @@ someOtherVar = 10;
// Variables declared without being assigned to are set to undefined. // Variables declared without being assigned to are set to undefined.
var someThirdVar; // = undefined var someThirdVar; // = undefined
// if you wan't to declare a couple of variables, then you could use a comma // If you want to declare a couple of variables, then you could use a comma
// separator // separator
var someFourthVar = 2, someFifthVar = 4; var someFourthVar = 2, someFifthVar = 4;
@ -194,8 +199,6 @@ myObj.myFourthKey; // = undefined
/////////////////////////////////// ///////////////////////////////////
// 3. Logic and Control Structures // 3. Logic and Control Structures
// The syntax for this section is almost identical to Java's.
// The `if` structure works as you'd expect. // The `if` structure works as you'd expect.
var count = 1; var count = 1;
if (count == 3){ if (count == 3){
@ -223,15 +226,15 @@ for (var i = 0; i < 5; i++){
// will run 5 times // will run 5 times
} }
//The For/In statement loops iterates over every property across the entire prototype chain // The for/in statement iterates over every property across the entire prototype chain.
var description = ""; var description = "";
var person = {fname:"Paul", lname:"Ken", age:18}; var person = {fname:"Paul", lname:"Ken", age:18};
for (var x in person){ for (var x in person){
description += person[x] + " "; description += person[x] + " ";
} }
//If only want to consider properties attached to the object itself, // To only consider properties attached to the object itself
//and not its prototypes use hasOwnProperty() check // and not its prototypes, use the `hasOwnProperty()` check.
var description = ""; var description = "";
var person = {fname:"Paul", lname:"Ken", age:18}; var person = {fname:"Paul", lname:"Ken", age:18};
for (var x in person){ for (var x in person){
@ -240,8 +243,9 @@ for (var x in person){
} }
} }
//for/in should not be used to iterate over an Array where the index order is important. // For/in should not be used to iterate over an Array where the index order
//There is no guarantee that for/in will return the indexes in any particular order // is important, as there is no guarantee that for/in will return the indexes
// in any particular order.
// && is logical and, || is logical or // && is logical and, || is logical or
if (house.size == "big" && house.colour == "blue"){ if (house.size == "big" && house.colour == "blue"){
@ -256,7 +260,7 @@ var name = otherName || "default";
// The `switch` statement checks for equality with `===`. // The `switch` statement checks for equality with `===`.
// use 'break' after each case // Use 'break' after each case
// or the cases after the correct one will be executed too. // or the cases after the correct one will be executed too.
grade = 'B'; grade = 'B';
switch (grade) { switch (grade) {
@ -503,6 +507,10 @@ myNumber === myNumberObj; // = false
if (0){ if (0){
// This code won't execute, because 0 is falsy. // This code won't execute, because 0 is falsy.
} }
if (new Number(0)){
// This code will execute, because wrapped numbers are objects, and objects
// are always truthy.
}
// However, the wrapper objects and the regular builtins share a prototype, so // However, the wrapper objects and the regular builtins share a prototype, so
// you can actually add functionality to a string, for instance. // you can actually add functionality to a string, for instance.
@ -547,6 +555,11 @@ of the language.
[JavaScript: The Definitive Guide][6] is a classic guide and reference book. [JavaScript: The Definitive Guide][6] is a classic guide and reference book.
[Eloquent Javascript][8] by Marijn Haverbeke is an excellent JS book/ebook with attached terminal
[Javascript: The Right Way][9] is a guide intended to introduce new developers to JavaScript and help experienced developers learn more about its best practices.
In addition to direct contributors to this article, some content is adapted from In addition to direct contributors to this article, some content is adapted from
Louie Dinh's Python tutorial on this site, and the [JS Tutorial][7] on the Louie Dinh's Python tutorial on this site, and the [JS Tutorial][7] on the
Mozilla Developer Network. Mozilla Developer Network.
@ -559,3 +572,5 @@ Mozilla Developer Network.
[5]: http://bonsaiden.github.io/JavaScript-Garden/ [5]: http://bonsaiden.github.io/JavaScript-Garden/
[6]: http://www.amazon.com/gp/product/0596805527/ [6]: http://www.amazon.com/gp/product/0596805527/
[7]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript [7]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript
[8]: http://eloquentjavascript.net/
[9]: http://jstherightway.org/