mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-05-05 14:28:31 +00:00
Merge remote-tracking branch 'adambard/master'
This commit is contained in:
commit
011c0b5fc7
@ -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/
|
||||||
|
Loading…
Reference in New Issue
Block a user