diff --git a/javascript.html.markdown b/javascript.html.markdown
index afa37bf1..858cec52 100644
--- a/javascript.html.markdown
+++ b/javascript.html.markdown
@@ -119,8 +119,20 @@ someOtherVar = 10
// Variables declared without being assigned to are set to undefined.
var someThirdVar // = undefined
+// There's shorthand for performing math operations on variables:
+someVar += 5 // equivalent to someVar = someVar + 5; someVar is 10 now
+someVar *= 10 // now someVar is 100
+
+// and an even-shorter-hand for adding or subtracting 1
+someVar++ // now someVar is 101
+someVar-- // back to 100
+
// Arrays are ordered lists of values, of any type.
-["Hello", 45, true]
+var myArray = ["Hello", 45, true]
+
+// Their members can be accessed using the square-brackets subscript syntax.
+// Array indices start at zero.
+myArray[1] // = 45
// JavaScript's objects are equivalent to 'dictionaries' or 'maps' in other
// languages: an unordered collection of key-value pairs.
@@ -130,7 +142,7 @@ var someThirdVar // = undefined
// JavaScript identifier. Values can be any type.
var myObj = {myKey: "myValue", "my other key": 4}
-// Object attributes can be accessed using the 'subscript' syntax,
+// Object attributes can also be accessed using the subscript syntax,
myObj["my other key"] // = 4
// ... or using the dot syntax, provided the key is a valid identifier.
@@ -143,9 +155,46 @@ myObj.myThirdKey = true
myObj.myFourthKey // = undefined
/***********
- * 3. Control Structures
+ * 3. Logic and Control Structures
***********/
+// The if structure works as you'd expect.
+var count = 1
+if (count == 3){
+ // evaluated if count is 3
+} else if (count == 4) {
+ // evaluated if count is 4
+} else {
+ // evaluated if it's not either
+}
+
+// As does while.
+while (true) {
+ // An infinite loop!
+}
+
+// Do-while loops are like while loops, except they always run at least once.
+var input
+do {
+ input = getInput()
+} while (!isValid(input))
+
+// the for loop is the same as C and Java: initialisation; test; iteration.
+for (var i = 0; i < 5; i++){
+ // will run 5 times
+}
+
+// && is logical and, || is logical or
+if (house.size == "big" && house.colour == "blue"){
+ house.contains = "bear"
+}
+if (colour == "red" || colour == "blue"){
+ // colour is either red or blue
+}
+
+// && and || "short circuit", which is useful for setting default values...
+var name = otherName || "default";
+
/***********
* 5. Functions, Scope and Closures
***********/
@@ -278,3 +327,8 @@ Network](https://developer.mozilla.org/en-US/docs/Web/JavaScript) provides
excellent documentation for JavaScript as it's used in browsers. Plus, it's a
wiki, so as you learn more you can help others out by sharing your own
knowledge.
+
+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](https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript)
+on the Mozilla Developer Network.