This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var people = ['Jim', 'Bob', 'Jane', 'Jill']; | |
var welcomes = people.map(function(name) { | |
return 'Hi' + ' ' + name + '!'; | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
JavaScript is a protypal language but has syntax that is more similar to a classical language which can be confusing. | |
Function as module (using self-executing function ) is a way to do functions better in some instances. | |
Function as module safeguards against values being exposed b/c it limits scope: | |
(function () { | |
var ... | |
function ... | |
function ... | |
}()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
hoisting in functions concern variables | |
The var statement gets spit into two parts: | |
The declaration part gets hoisted to the top of the function, initializing with undefined. | |
The initialization part turns into an ordinary assignment. | |
var myVar = 0, myOtherVar; | |
Expands into | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function expression | |
function | |
optional name | |
parameters | |
wrapped in () | |
zero or more names | |
separated by a comma | |
body | |
wrapped in {} | |
zero or more statements |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
expression | |
if | |
switch | |
while | |
do | |
for | |
break | |
continue | |
return | |
try/throw |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
number.toString(radix); | |
number can be a variable | |
radix - optional and determines the base to use for representing a numeric value. Must be an integer between 2 and 36. | |
2 - binary | |
8 - octal | |
16 - hexadecimal- often used with hex values used in styling such as when changing color, background-color etc. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Closure is a central idea in JavaScript. | |
The context of an inner function includes the sclope of the outer function. | |
An inner function enjoys that context even after the parent functions have returned. | |
function scope works like block scope. | |
Global: | |
var names = ['zero', 'one', 'two', | |
'three', 'four', 'five', 'six', |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function () { | |
return expression: | |
}()) | |
works except if any of the following are used in function | |
var | |
function | |
break | |
continue | |
return |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Recursion - when a function calls itself. | |
Discovered with LISP around 1958. | |
A great example of recursion is the quicksort | |
algorithm: | |
1. use quicksort to divide the array into two groups, low and high | |
if alpha, put all items that begin with a-m into 1st group and the remaining in 2nd group | |
if numbers, determine the mid-point and put lower nums in 1st group and the remaining in 2nd group unless this type of dividing would result in one group being much larger than the other, if so, adj mid-point | |
2. call quicksort again on each group containing more than one element. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Where did functions come from? | |
subroutines | |
In earlier languages, subroutines were written and used in various ways. | |
Subroutines were called and could return something. | |
They were also referred to as: sub, procedure, proc, func, functions, lambda and are all the same idea. | |
What advantages do subroutines give us? | |
code reuse which was originally a memory conserving device | |
decomposition - take a complicated problem and break it down into subroutines |