Introduction to JavaScript

advertisement
Introduction to JavaScript
Module 2
Client Side JS Programming Group @ M-GO
Sponsored By
www.mgo.com
Module 2 Topics
•
The glorious debugger
–
–
–
•
•
•
•
•
•
•
•
Breakpoints
The Watch
The Console
Basic grammar
Comments
Naming conventions (camelCase)
var statements
Strings and numbers
Concatenation and adding
Truthy and falsy values – type coercion
Flow Control
–
–
–
–
–
–
If, else, else if
while
do…while
for
try/catch
Disruptive statements
•
•
•
return
break
throw
A copy of the html file used in this
lesson can be found here:
http://goo.gl/0FFLN8
Debugging - Breakpoints
• Breakpoints stop code execution
– There are two types of breakpoints
• debugger;
• Interactive breakpoint
Debugging – Step Control
• Continue: Keep going until the next breakpoint.
• Step Over: Go to the next line, if the next line is a
function, run the function and go to the line after
it.
• Step Into: Go to the next line, if the next line is a
function, go into the function.
• Step Out: If you’re in a function, finish the
function and stop when the function returns to
the line that called it.
• Break All: Stop running now – wherever the flow
happens to be.
Chrome’s Step Controls
Debugging – The Watch
• Watch expressions allow you to evaluate code
at runtime to see what it would do if you were
actually to place it in your program.
• Watch expressions can be added two ways
– “Add To Watch” content menu
– Manually typing an expression into the watch
Debugging – The Console
• The console gives you a place to output text
data. Very useful for large, asynchronous or
long running tasks and much more.
• You can send data to the console using the
console.log(<your text here>); command.
• You can use the console
What’s REPL?
What’s
asynchronous!?
as an REPL.
REPL: Read Evaluate Print Loop. I.e.: a “live” place to type code.
Pronounced “reah-pull”
Asynchronous: Something that happens later. We’ll cover asynchronous in
a later module.
Basic Grammar
• Almost statements get a ; at the end. If you
omit the ; at the end of a statement that
requires it, the JavaScript engine you’re using
will add it for you! That’s a terrible, bad, ugly
thing but you must live with it. Make sure you
add ; to the lines that require them.
• What lines require ; you ask? Everything but
functions and flow control*
* This is not 100% true, it’s like 87% true. For a full and annoying description of
JavaScript grammar see JavaScript: The Good Parts – Appendix D. Syntax Diagrams.
However, to get you started, these are good guidelines to follow.
Comments
• Block Comments
• Line Comments
Only use me for formal
documentation
Use me often!
But make sure I don’t
come after code on the
same line. That can be
confusing.
Unless you’re writing formal JSDoc documentation comments, use line comments!
Naming Conventions
• Everything is camel case – unless it’s a
constructor or a namespace like object.
• Camel case:
•
•
•
•
thisIsCamelCaseBecauseItLooksLikeACamelsHump
Note that the first character is lower case!
If it’s a constructor or a namespace, the first letter should
be capitalized.
Avoid underscores! Don’t do this: _myVar or my_var
or any variation thereof.
What the hell is a
Don’t name your child
constructor? What the hell
is a “namespace like
“Placenta”
object”?
You keep saying things that
mean nothing to me.
Don’t worry, we’ll cover namespaces and
constructors in later lessons.
var statements
• var declares a variable. This is how data (objects, functions, strings,
numbers, arrays) are referenced. There are other ways, but this is
the primary way.
• var statements declare variables inside of the closure in which they
are written.
• What’s a closure?
• Functions are closures. This is where the declared variable is
available. Outside of the closure, the variable will not be available.
• We’ll cover closures and the
I DON’T
implications of closures in
UNDERSTAND
more depth later.
CLOSURE!!
It’s OK, you don’t need to for now
Strings and Numbers
• A string is a segment of text data. Strings begin
with ‘ or “ and end with a matching ‘ or “.
• Numbers don’t have ‘ or “ surrounding them… and
they are numbers.
• If a number is quoted, it isn’t a number, it’s a
string.
Concatenation and Adding
• Now that we know numbers and strings are different types
of data, we can learn what that really means.
• When you add a number to a string the number is implicitly
converted into a string and then concatenated. This
implicit conversion is called type coercion.
Boolean Logic
All logic can be expressed as Boolean
expressions.
In programming we use the two Boolean
values “true” and “false”. We also
create statements that can be evaluated
to “true” and “false” for example:
5 === 10 is “false”
1 === 1 is “true”.
Prior to the invention of Boolean logic,
people would just say “huh? Are you
talking to me?” It was indeed a dark
time for logic.
*George was known to throw awesome keg parties.
My invention
is the basis of all
Computers.
So I’m kind of a
big deal.
George Boole
1815 - 1864
!, != and !==
• ! Will invert a Boolean value. Think of ! as the word “not”.
• If you use a ! on a non-Boolean value, it will coerce the
value into a Boolean value. This is awesome! It’s also
quite confusing.
• != means not equal to. It is the opposite of ==.
• !== means type safe not equal to. It is the opposite of ===.
• Never use != always use !==.
Truthy and Falsy values
• More type coercion! All of the values on the
left are considered the same as false when
coerced into a Boolean value.
Using == (coercive equal)
Using === (type safe equal)
Pro Tip: Always use === never use ==
Flow Control
• Flow control statements allow you to alter the
flow of the program.
• Rather than moving from one line to the next,
you can create statements that alter the path
the code follows.
• You can make your code execute some lines
and not others or execute a set of lines many
times.
Flow Control - If, else if, else
•
•
•
•
“if” will run if the condition is true.
“else if” will run code if the previous “if” was not true.
“else” will run if all other “if” blocks are not true.
Syntax:
Flow Control - while
• while will continue to run the code in the while block
so long as the while condition statement is true.
• If the statement is not true, the code inside of the
block will not be executed.
• If your condition statement is always true, your code
will continue to loop forever. Or at least until you stop
paying your electric bill or you shut off your browser.
Flow Control – do…while
• Exactly like the while statement, with the
exception that it will always run at least one
time.
• This is because the condition is evaluated
after each time the code block is executed,
rather than before as with the while loop.
Flow Control - for
• “For” is for looping a specific number of times.
• For loops have 4 parts
–
–
–
–
Initilization
Condition
Increment/Decrement
Code block
for(<initilization>;<condition>;<increment>){
// code to execute
}
* There is another form of the for statement that we will cover in a later
module called the “for in” statement.
Flow Control - try / catch
• When you expect you might cause an error with a
statement, you can put it within a try / catch block. It
will “try” your code and “catch” any errors that your
code might “throw”.
• If no error is thrown, the catch block is never executed.
• When an error is thrown, the variable defined in catch,
in this case “e”, will contain information about the
error, usually in the form of an “Error” object.
In this example, the object blah does not exist, so it is not possible to
access the property blah of nothing.
Flow Control – Disruptive Statements
• Disruptive statements cause the code path to
exit loops and functions and throw errors.
• return, break, throw are all disruptive
statements.
• They are called disruptive statements because
they would distract other children, making the
teacher send them to the vice principal and
resulting in a call home to their parents.
Flow Control – Disruptive Statements: return
• return: causes the function to exit to the code
that called the function. Optionally you can
supply a value to return.
• We’ll learn more about return and functions in
a later module.
Flow Control – Disruptive Statements: break
• break causes the current loop to immediately end.
• In this example, the console will not output a value
higher than 5 even though the loop would have
continued otherwise.
• break will cause the code to exit the loop that it is
declared in, it will not exit outer loops.
Flow Control – Disruptive Statements: throw
• throw will cause an exception to be thrown.
• If a throw statement isn’t inside of a try/catch
block it will cause your program to terminate
and write an error to the console. And so I told the chap!
You can’t review my
code while yours is
throwing so many
unhandled exceptions!
* Exception is really just another way of saying error,
but you can say exception to sound more
knowledgeable and smug around other programmers.
Code Like a Sir!
• Write DRY code and DAMP comments and error
messages
DRY: Don’t Repeat Yourself
DAMP: Descriptive and meaningful phrases.
• Follow quality coding guidelines.
– Use standard naming conventions
– Use correct indentation like it was going to save your life.
•
•
•
•
Use code quality tools like http://jslint.com/.
Don’t develop bad habits!
Don’t hesitate to ask for help.
If you’re willing to put up with internet trolls, you can
find help in IRC #javascript
• And of course Google! Avoid w3schools, use MDN
(Mozilla developer network) or Stack overflow
Client Side JS Programming Group @ M-GO
Sponsored By
Contact Me:
Email
Hangouts
Skype
Tony Germaneri
Tony.Germaneri@mgo.com
TonyGermaneri@gmail.com
tony.germaneri.mobile
www.mgo.com
Download