JavaScript
       Programming the WWW




Saturday, December 15, 12
Agenda

                  Key Concepts

                  Core Types

                  Syntax

                  The Global Object & Scope Chain

                  Function Objects



Saturday, December 15, 12
History
             1995 Brendan Eich started
             developing a new language
             for Netscape Navigator 2.0

             Original name was
             LiveScript

             Announced on Dec 1995 as
             JavaScript

             1996 Microsoft responded
             with JScript



Saturday, December 15, 12
JavaScript Key Ideas


                  Interpreter based (no compilation)

                  Loosely typed language

                  Objects are just hash tables




Saturday, December 15, 12
JavaScript Key Ideas


                  Interpreter based (no compilation)

                  Loosely typed language

                  Objects are just hash tables




Saturday, December 15, 12
JavaScript Key Ideas


                  Interpreter based (no compilation)

                  Loosely typed language

                  Objects are just hash tables




Saturday, December 15, 12
Hello JavaScript
                             Define and initialize a variable called ‘text’ with
                             the string “Hello World”


                  var text = “Hello World”;

                  console.log(text);




Saturday, December 15, 12
Hello JavaScript


                  var text = “Hello World”;

                  console.log(text);



     Call the log function from the console object on the
     variable ‘text’


Saturday, December 15, 12
Hello JavaScript
                              Define and initialize a variable called ‘text’ with
                              the string “Hello World”


                  var text = “Hello World”;

                  console.log(text);



     Call the log function from the console object on the
     variable ‘text’


Saturday, December 15, 12
Running JavaScript


                  Easy way: jsbin

                  Completely offline using node.js

                  Using a simple HTML file




Saturday, December 15, 12
Demo
             JavaScript Basic Syntax




Saturday, December 15, 12
JavaScript Core Types
                  Numbers

                  Strings

                  Booleans

                  null

                  undefined

                  Objects


Saturday, December 15, 12
Numbers
                  JavaScript has only one number type called
                  number

                  number is a 64-bit floating point (double)

                  Same arithmetical problems double have (0.1+0.2 !
                  =0.3)

                  A special value NaN represents errors



Saturday, December 15, 12
Numeric Functions
                  Number(string)
                            converts string to number
                            returns NaN on error


                  parseInt(string, radix)
                            converts string to number
                            tries its best (so '7hello' is OK)


                  Math.random()
                            returns a random between 0 and 1



Saturday, December 15, 12
Numeric Functions
                      x = 3;

                      y = Number(7);

                      z = Number(‘9’);



                      console.log(x + y + z);




Saturday, December 15, 12
Q&A
                  Numbers

                  Strings

                  Booleans

                  null

                  undefined

                  Objects


Saturday, December 15, 12
Strings

                  Strings are unicode 16-bit chars (like in Java).

                  No char class. Characters are strings of length 1

                  Strings are immutable (like in Java)

                  Both Single and Double quotes make a string




Saturday, December 15, 12
String Examples
                   'hello'.length          === 5

                   String(10).length       === 2

                   'hello'.indexOf('l')    === 2

                   'hello'.lastIndexOf('l')=== 3

                   'hello'.toUpperCase()   === 'HELLO'




Saturday, December 15, 12
Lab


                  http://ynonperek.com/javascript-exer.html

                  Exercises 1-5




Saturday, December 15, 12
Q&A
                  Numbers

                  Strings

                  Booleans

                  null

                  undefined

                  Objects


Saturday, December 15, 12
Boolean Type
                  JavaScript supports ‘true’ and ‘false’ as boolean
                  values

                  Boolean(value) is a function returning the truthness
                  of a value

                  returns false if value is falsy, and true if value is
                  truthy

                  !!value has the same meaning



Saturday, December 15, 12
null

                  represents the "nothing" of JavaScript

                  usually used to mark errors

                  JavaScript will not give null to a variable. It's
                  always the result of an assignment performed on
                  purpose




Saturday, December 15, 12
undefined


                  Not even the nothing

                  JavaScript puts undefined in anything that hasn't
                  yet been assigned a value




Saturday, December 15, 12
JavaScript False/True

                  These are all falsy:

                        false, null, undefined

                        “” (the empty string)

                        0, NaN

                  Everything else is truthy



Saturday, December 15, 12
Objects
                  Everything else is an object

                  An object is a collection of key/value pairs.

                  Objects are fully dynamic, so new methods and
                  fields can be added at runtime

                  Objects have no classes

                  Each object has a prototype. We'll talk about that
                  later.


Saturday, December 15, 12
Objects

     name            Ynon Perek
                                            var me = {
                                               name  : 'Ynon Perek',
                                               email : 'ynonperek@yahoo.com',
     email           ynonperek@yahoo.com       web   : 'http://ynonperek.com'
                                            }; 


     web             http://ynonperek.com




Saturday, December 15, 12
Q&A
                  Numbers

                  Strings

                  Booleans

                  null

                  undefined

                  Objects


Saturday, December 15, 12
Exercise

                  Write a JS program that randomizes 3 numbers
                  from 1 to 100, and prints their sum total

                  Write a JS function that takes two values and
                  returns their sum.
                  If it got only one, it should return that number




Saturday, December 15, 12
JavaScript Syntax
                  Identifiers

                  Reserved Words

                  Comments

                  Loops and Branches

                  Functions

                  Objects & Arrays


Saturday, December 15, 12
JavaScript Identifiers


                  Starts with a letter, an _, or a $

                  Followed by letters, digits, _ or $




Saturday, December 15, 12
Naming Conventions

                  variable names are lowercased

                  multiple words are separated by _ in variable
                  names

                  multiple words are camel cased in function names

                  A constructor function starts with a captial




Saturday, December 15, 12
Identifier Examples

                  counter

                  file_name

                  function getName()

                  function Person()




Saturday, December 15, 12
JavaScript Reserved
                  Words
                  abstract
             boolean break byte
             case catch char class const continue
             debugger default delete do double
             else enum export extends
             false final finally float for function
             goto
             if implements import in instanceof int interface
             long
             native new null
             package private protected public
             return
             short static super switch synchronized
             this throw throws transient true try typeof
             var volatile void
             while with




Saturday, December 15, 12
JavaScript Comments

                   // this is a valid line comment in Javascript

                   /**

                   * Java style multi line comments work well also

                   * they are recommended for commenting on functions

                   */




Saturday, December 15, 12
Syntax Q & A
                  Identifiers

                  Reserved Words

                  Comments

                  Loops and Branches

                  Functions

                  Objects & Arrays


Saturday, December 15, 12
Loop Controls

                  JavaScript has:

                        while and do-while loops

                        for loops

                        for-in loops




Saturday, December 15, 12
While Loop

                  Syntax:

                    while (expression) {

                            statement;
                    }




Saturday, December 15, 12
Do-while Loop

                  Syntax:

                   do {

                     statement;
                   } while (expression);

                  Note the ending semicolon



Saturday, December 15, 12
For Loop

                     Syntax:

                     for ( initialize; test; increment) {
                       statement;

                     }




Saturday, December 15, 12
For Example

                   var sum = 0;

                   for ( var i=0; i < 10; ++i ) {

                            sum += i;
                   }
                   console.log(sum);




Saturday, December 15, 12
For-in loop

                  allows iterating through all the properties of an
                  object

                  Be careful with this one - it yields wrong results
                  when combined with inheritance




Saturday, December 15, 12
Branches
                  Syntax:

                   if ( expression ) {
                   }

                   else if
                   ( something_else ) {
                   }

                   else {
                   }


Saturday, December 15, 12
Exercise

                  Write a JS that randomizes 3 number and prints
                  the largest one

                  Write a JS that prints the square-sum of all the
                  numbers divisible by 7 in range 1..100 (1^2 + 7^2
                  + 14^2 + ...)




Saturday, December 15, 12
Syntax Q & A
                  Identifiers

                  Reserved Words

                  Comments

                  Loops and Branches

                  Functions

                  Objects & Arrays


Saturday, December 15, 12
Functions & Scope

                                             var text = 'Hello Scope';
                  Outside all functions,      
                                             var sum = 0;
                  variables have the          
                  “global” scope.            for ( var i=0; i < 10; i++ ) {
                                               sum += i;  
                                             }
                  Count how many              
                  globals are on the right   console.log( sum );




Saturday, December 15, 12
Functions & Scope
                  A function is an object that is callable (meaning we
                  can apply it to arguments)

                  In JavaScript, we have two ways to declare a
                  function. Either as a named function or an
                  anonymous function

                  A function can return a value by using the return
                  keyword



Saturday, December 15, 12
Creating A Function
                   function foo(x, y) {
                     return x + y;
                   }


                   var bar = function(x, y) {
                     return x + y;
                   };




Saturday, December 15, 12
Functions & Scope

                  Inside a function, a variable can be scoped with
                  the keyword var

                  Using strict mode, all variables must be defined
                  var

                  This helps prevent bugs because we are less likely
                  to mess with outside code




Saturday, December 15, 12
Functions & Scope

                  Best Practices:

                        Write all code inside a function block

                        Use only one var statement at the beginning of
                        that function




Saturday, December 15, 12
Functions & Scope

                  A function definition can appear “inside” another
                  function

                  This is called a “closure”, and then the inner
                  function has access to all variables defined by the
                  outer “closing” function

                  It also keeps all variables alive




Saturday, December 15, 12
Functions & Scope
                  What is printed ? Why ?

                   function Counter(max) {
                     var val = 0;
                     return function() { return (val < max) ? val++ : false; };
                   }

                   var c = Counter(10);

                   while (c()) {
                     console.log(c());
                   }




Saturday, December 15, 12
Functions Q & A



Saturday, December 15, 12
Objects

                  An object is a collection of key/value pairs

                  Objects are instantiated using the object literal

                  Properties stored in objects are fetched using the
                  square bracket notation or the dot notation




Saturday, December 15, 12
Objects

                   var pos = { x : 50; y : 10 };

                   pos.move = function(dx, dy) {

                            this.x += dx;

                            this.y += dy;
                   };




Saturday, December 15, 12
Objects Exercise

                  Create a person object with three fields:

                        name: your name

                        favorite_color: your favorite color

                        hello: a function that prints out your name and
                              favorite color




Saturday, December 15, 12
The this Keyword

                  Inside a function, a special keyword named ‘this’
                  is used to determine the function calling context

                  When a function was called as a method, this
                  refers to the calling object

                  Otherwise, this refers to the global object




Saturday, December 15, 12
Arrays

                  Arrays represent ordered data in JavaScript

                  Arrays are normal objects, so they can have
                  attributes other than their indexes

                  Arrays have some array related functions we can
                  use




Saturday, December 15, 12
Arrays

                   var arr = [];

                   arr.push(1, 2, 3); // add data

                   arr.pop();         // returns 3

                   arr[0] = 5;        // changes array

                   console.log(arr[2]); // value at




Saturday, December 15, 12
Syntax Q & A
                  Identifiers

                  Reserved Words

                  Comments

                  Loops and Branches

                  Functions

                  Objects & Arrays


Saturday, December 15, 12
DOM
             Scripting
             Using JS To Manipulate the
             web page



                                          http://www.flickr.com/photos/jram23/3088840966/




Saturday, December 15, 12
The DOM

                  Stands for Document
                                             div         HTML
                  Object Model

                  Every HTML element
                  has a JS object
                  “bound” to it in a
                  special bond
                                        HTMLDivElement   JS




Saturday, December 15, 12
The DOM
                                     <p id="text"></p>
                  Can use
                  getElementById
                  to find a specific   var t = document.getElementById('text');

                  element            t.innerHTML = "Hello World";

                  Can use
                  getElementsByTagNam
                  e to get all elements
                  with a specified name



Saturday, December 15, 12
DOM Agenda

                  jQuery Introduction

                  Handling Events

                  Writing a simple web
                  app




Saturday, December 15, 12
The Facts

                  Every browser is different. Really.

                  W3 Standard

                  Webkit

                  Mozilla

                  Microsoft



Saturday, December 15, 12
Ajax Libraries


                  Developer tools that wrap common functionality
                  and create a standard

                  Many options to choose from. We’ll use jQuery




Saturday, December 15, 12
jQuery Basics
                                         Wrap a normal DOM
          $('p').html('hello jQUery');   element inside a jQuery
                                         object
           <p></p>
                                         All operations on the
                                         element are performed
                                         by jQuery

                                         Unified and cross
                                         browser API


Saturday, December 15, 12
jQuery Basics: Selectors
                                          <p id="text"></p>
                  Powerful element
                  selection and
                  manipulations           $('p#text').html("Hello World");


                  Works “the same” for
                  all mobile & desktop
                  browsers          Selector returning a
                                     jQuery Object
                                                      An action to perform
                                                      on the object
Saturday, December 15, 12
jQuery Actions
                                  $('div#foo').addClass('wide');
                  Each jQuery     $('div#foo').removeClass('wide');
                  object
                                  $('div#foo').css('background', 'red');
                  supports a
                  wide range of   $('div#foo').hide();
                  functions to    $('div#foo').show();    

                  alter the
                  elements




Saturday, December 15, 12
jQuery Actions Example


                  Zebra stripe a table
                  using jQuery
                                         $('table tr:nth-child(2n)').css('background', '#ccc');




Saturday, December 15, 12
jQuery Events

                  Define what to do when something happens

                  in jQuery, “bind” a function to an event

                  After the bind, every time the the event happens
                  your callback is called, with the object as the
                  “this” argument




Saturday, December 15, 12
jQuery Events
                  document.ready   scroll

                  click            select

                  hover            submit

                  keypress         Full list: http://
                  mousemove
                                   api.jquery.com/
                                   category/events/
                  resize



Saturday, December 15, 12
jQuery Demo

                  Build a red spotter game

                  Game should present the user with 4 colored
                  squares, only one is red

                  User should click on the red square




Saturday, December 15, 12
jQuery API

                  Other useful methods:

                  attr - change an attribute value

                  css - change a style attribute

                  html - change innerHTML content

                  data - store arbitrary data inside an element



Saturday, December 15, 12
jQuery Lab
                  Write a web application that splits the screen into
                  four sections. Each click on a section should
                  display a sentence inside the clicked section

                  Write a web app to convert time units. User should
                  enter time in seconds, minutes or hours, and
                  convert to all the others

                  Use HTML5 Boilerplate and jQuery



Saturday, December 15, 12
Q&A



Saturday, December 15, 12
Thank You


                  Ynon Perek

                  ynonperek@yahoo.com

                  ynonperek.com




Saturday, December 15, 12

More Related Content

PDF
An Introduction to Redux
PPTX
What Is Virtual DOM In React JS.pptx
PPTX
Dom(document object model)
PPT
Introduction to Javascript
PDF
Introduction to Redux
PPTX
jQuery
PPTX
React - Start learning today
PDF
Php tutorial(w3schools)
An Introduction to Redux
What Is Virtual DOM In React JS.pptx
Dom(document object model)
Introduction to Javascript
Introduction to Redux
jQuery
React - Start learning today
Php tutorial(w3schools)

What's hot (20)

PDF
Basics of JavaScript
PPT
Introduction to JavaScript (1).ppt
PPTX
An Introduction to the DOM
PPTX
Introduction to Javascript By Satyen
PPTX
Asp.Net Core MVC with Entity Framework
PPT
PPTX
React js programming concept
PPTX
Nodejs functions & modules
PPTX
Its time to React.js
PDF
Basic JavaScript Tutorial
PPT
Javascript
PDF
JavaScript - Chapter 12 - Document Object Model
PDF
React JS - Introduction
PPTX
Chapter 1 introduction to sql server
PPT
Introduction to Cascading Style Sheets (CSS)
PPTX
Deep dive into React Portals
ODP
Introduction to ReactJS
PDF
React Context API
PPTX
(Fast) Introduction to HTML & CSS
Basics of JavaScript
Introduction to JavaScript (1).ppt
An Introduction to the DOM
Introduction to Javascript By Satyen
Asp.Net Core MVC with Entity Framework
React js programming concept
Nodejs functions & modules
Its time to React.js
Basic JavaScript Tutorial
Javascript
JavaScript - Chapter 12 - Document Object Model
React JS - Introduction
Chapter 1 introduction to sql server
Introduction to Cascading Style Sheets (CSS)
Deep dive into React Portals
Introduction to ReactJS
React Context API
(Fast) Introduction to HTML & CSS
Ad

Viewers also liked (20)

PDF
Web Programming Intro
PDF
Scalable JavaScript
PDF
03 Advanced JavaScript
PDF
Performance
PDF
Frontend Engineer Toolbox
PDF
JavaScript DOM Manipulations
PDF
Html5 intro
PPTX
основні теги мови Html
PDF
01 Mobile Web Introduction
PDF
Refactoring out of the mess
PDF
ES6Katas.org - an introduction and the story behind
PPT
Диплом программиста получают в Витебском госуниверситете
PDF
Intro to SVGs
PDF
PDF
маркетинг кит - Seo - email version (01.01.2015)
PDF
Html5 apis
PPT
завуч и директор
PPTX
Presentationfor lnl
PPTX
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
PPTX
САЙТ ГИМНАЗИИ
Web Programming Intro
Scalable JavaScript
03 Advanced JavaScript
Performance
Frontend Engineer Toolbox
JavaScript DOM Manipulations
Html5 intro
основні теги мови Html
01 Mobile Web Introduction
Refactoring out of the mess
ES6Katas.org - an introduction and the story behind
Диплом программиста получают в Витебском госуниверситете
Intro to SVGs
маркетинг кит - Seo - email version (01.01.2015)
Html5 apis
завуч и директор
Presentationfor lnl
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
САЙТ ГИМНАЗИИ
Ad

More from Ynon Perek (20)

PDF
Regexp
PDF
Html5 intro
PDF
09 performance
PDF
Mobile Web Intro
PDF
Qt multi threads
PDF
Vimperl
PDF
Syllabus
PDF
Mobile Devices
PDF
Network
PDF
Architecture app
PDF
Cryptography
PDF
Unit Testing JavaScript Applications
PDF
How to write easy-to-test JavaScript
PDF
Introduction to Selenium and Ruby
PDF
Introduction To Web Application Testing
PDF
Accessibility
PDF
Angularjs
PDF
Js memory
PDF
Qt Design Patterns
PDF
Web Application Security
Regexp
Html5 intro
09 performance
Mobile Web Intro
Qt multi threads
Vimperl
Syllabus
Mobile Devices
Network
Architecture app
Cryptography
Unit Testing JavaScript Applications
How to write easy-to-test JavaScript
Introduction to Selenium and Ruby
Introduction To Web Application Testing
Accessibility
Angularjs
Js memory
Qt Design Patterns
Web Application Security

Recently uploaded (20)

PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
PPTX
Modernising the Digital Integration Hub
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PDF
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
PDF
Improvisation in detection of pomegranate leaf disease using transfer learni...
DOCX
search engine optimization ppt fir known well about this
PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PPTX
Microsoft Excel 365/2024 Beginner's training
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PPT
Module 1.ppt Iot fundamentals and Architecture
PPTX
The various Industrial Revolutions .pptx
PDF
1 - Historical Antecedents, Social Consideration.pdf
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PDF
UiPath Agentic Automation session 1: RPA to Agents
PDF
A proposed approach for plagiarism detection in Myanmar Unicode text
Custom Battery Pack Design Considerations for Performance and Safety
Convolutional neural network based encoder-decoder for efficient real-time ob...
ENT215_Completing-a-large-scale-migration-and-modernization-with-AWS.pdf
Modernising the Digital Integration Hub
NewMind AI Weekly Chronicles – August ’25 Week III
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
Improvisation in detection of pomegranate leaf disease using transfer learni...
search engine optimization ppt fir known well about this
A contest of sentiment analysis: k-nearest neighbor versus neural network
Microsoft Excel 365/2024 Beginner's training
sustainability-14-14877-v2.pddhzftheheeeee
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
The influence of sentiment analysis in enhancing early warning system model f...
Module 1.ppt Iot fundamentals and Architecture
The various Industrial Revolutions .pptx
1 - Historical Antecedents, Social Consideration.pdf
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
UiPath Agentic Automation session 1: RPA to Agents
A proposed approach for plagiarism detection in Myanmar Unicode text

02 JavaScript Syntax

  • 1. JavaScript Programming the WWW Saturday, December 15, 12
  • 2. Agenda Key Concepts Core Types Syntax The Global Object & Scope Chain Function Objects Saturday, December 15, 12
  • 3. History 1995 Brendan Eich started developing a new language for Netscape Navigator 2.0 Original name was LiveScript Announced on Dec 1995 as JavaScript 1996 Microsoft responded with JScript Saturday, December 15, 12
  • 4. JavaScript Key Ideas Interpreter based (no compilation) Loosely typed language Objects are just hash tables Saturday, December 15, 12
  • 5. JavaScript Key Ideas Interpreter based (no compilation) Loosely typed language Objects are just hash tables Saturday, December 15, 12
  • 6. JavaScript Key Ideas Interpreter based (no compilation) Loosely typed language Objects are just hash tables Saturday, December 15, 12
  • 7. Hello JavaScript Define and initialize a variable called ‘text’ with the string “Hello World” var text = “Hello World”; console.log(text); Saturday, December 15, 12
  • 8. Hello JavaScript var text = “Hello World”; console.log(text); Call the log function from the console object on the variable ‘text’ Saturday, December 15, 12
  • 9. Hello JavaScript Define and initialize a variable called ‘text’ with the string “Hello World” var text = “Hello World”; console.log(text); Call the log function from the console object on the variable ‘text’ Saturday, December 15, 12
  • 10. Running JavaScript Easy way: jsbin Completely offline using node.js Using a simple HTML file Saturday, December 15, 12
  • 11. Demo JavaScript Basic Syntax Saturday, December 15, 12
  • 12. JavaScript Core Types Numbers Strings Booleans null undefined Objects Saturday, December 15, 12
  • 13. Numbers JavaScript has only one number type called number number is a 64-bit floating point (double) Same arithmetical problems double have (0.1+0.2 ! =0.3) A special value NaN represents errors Saturday, December 15, 12
  • 14. Numeric Functions Number(string) converts string to number returns NaN on error parseInt(string, radix) converts string to number tries its best (so '7hello' is OK) Math.random() returns a random between 0 and 1 Saturday, December 15, 12
  • 15. Numeric Functions x = 3; y = Number(7); z = Number(‘9’); console.log(x + y + z); Saturday, December 15, 12
  • 16. Q&A Numbers Strings Booleans null undefined Objects Saturday, December 15, 12
  • 17. Strings Strings are unicode 16-bit chars (like in Java). No char class. Characters are strings of length 1 Strings are immutable (like in Java) Both Single and Double quotes make a string Saturday, December 15, 12
  • 18. String Examples 'hello'.length === 5 String(10).length === 2 'hello'.indexOf('l') === 2 'hello'.lastIndexOf('l')=== 3 'hello'.toUpperCase() === 'HELLO' Saturday, December 15, 12
  • 19. Lab http://ynonperek.com/javascript-exer.html Exercises 1-5 Saturday, December 15, 12
  • 20. Q&A Numbers Strings Booleans null undefined Objects Saturday, December 15, 12
  • 21. Boolean Type JavaScript supports ‘true’ and ‘false’ as boolean values Boolean(value) is a function returning the truthness of a value returns false if value is falsy, and true if value is truthy !!value has the same meaning Saturday, December 15, 12
  • 22. null represents the "nothing" of JavaScript usually used to mark errors JavaScript will not give null to a variable. It's always the result of an assignment performed on purpose Saturday, December 15, 12
  • 23. undefined Not even the nothing JavaScript puts undefined in anything that hasn't yet been assigned a value Saturday, December 15, 12
  • 24. JavaScript False/True These are all falsy: false, null, undefined “” (the empty string) 0, NaN Everything else is truthy Saturday, December 15, 12
  • 25. Objects Everything else is an object An object is a collection of key/value pairs. Objects are fully dynamic, so new methods and fields can be added at runtime Objects have no classes Each object has a prototype. We'll talk about that later. Saturday, December 15, 12
  • 26. Objects name Ynon Perek var me = {    name  : 'Ynon Perek',    email : '[email protected]', email [email protected]    web   : 'http://ynonperek.com' };  web http://ynonperek.com Saturday, December 15, 12
  • 27. Q&A Numbers Strings Booleans null undefined Objects Saturday, December 15, 12
  • 28. Exercise Write a JS program that randomizes 3 numbers from 1 to 100, and prints their sum total Write a JS function that takes two values and returns their sum. If it got only one, it should return that number Saturday, December 15, 12
  • 29. JavaScript Syntax Identifiers Reserved Words Comments Loops and Branches Functions Objects & Arrays Saturday, December 15, 12
  • 30. JavaScript Identifiers Starts with a letter, an _, or a $ Followed by letters, digits, _ or $ Saturday, December 15, 12
  • 31. Naming Conventions variable names are lowercased multiple words are separated by _ in variable names multiple words are camel cased in function names A constructor function starts with a captial Saturday, December 15, 12
  • 32. Identifier Examples counter file_name function getName() function Person() Saturday, December 15, 12
  • 33. JavaScript Reserved Words abstract boolean break byte case catch char class const continue debugger default delete do double else enum export extends false final finally float for function goto if implements import in instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try typeof var volatile void while with Saturday, December 15, 12
  • 34. JavaScript Comments // this is a valid line comment in Javascript /** * Java style multi line comments work well also * they are recommended for commenting on functions */ Saturday, December 15, 12
  • 35. Syntax Q & A Identifiers Reserved Words Comments Loops and Branches Functions Objects & Arrays Saturday, December 15, 12
  • 36. Loop Controls JavaScript has: while and do-while loops for loops for-in loops Saturday, December 15, 12
  • 37. While Loop Syntax: while (expression) { statement; } Saturday, December 15, 12
  • 38. Do-while Loop Syntax: do { statement; } while (expression); Note the ending semicolon Saturday, December 15, 12
  • 39. For Loop Syntax: for ( initialize; test; increment) { statement; } Saturday, December 15, 12
  • 40. For Example var sum = 0; for ( var i=0; i < 10; ++i ) { sum += i; } console.log(sum); Saturday, December 15, 12
  • 41. For-in loop allows iterating through all the properties of an object Be careful with this one - it yields wrong results when combined with inheritance Saturday, December 15, 12
  • 42. Branches Syntax: if ( expression ) { } else if ( something_else ) { } else { } Saturday, December 15, 12
  • 43. Exercise Write a JS that randomizes 3 number and prints the largest one Write a JS that prints the square-sum of all the numbers divisible by 7 in range 1..100 (1^2 + 7^2 + 14^2 + ...) Saturday, December 15, 12
  • 44. Syntax Q & A Identifiers Reserved Words Comments Loops and Branches Functions Objects & Arrays Saturday, December 15, 12
  • 45. Functions & Scope var text = 'Hello Scope'; Outside all functions,   var sum = 0; variables have the   “global” scope. for ( var i=0; i < 10; i++ ) {   sum += i;   } Count how many   globals are on the right console.log( sum ); Saturday, December 15, 12
  • 46. Functions & Scope A function is an object that is callable (meaning we can apply it to arguments) In JavaScript, we have two ways to declare a function. Either as a named function or an anonymous function A function can return a value by using the return keyword Saturday, December 15, 12
  • 47. Creating A Function function foo(x, y) {   return x + y; } var bar = function(x, y) {   return x + y; }; Saturday, December 15, 12
  • 48. Functions & Scope Inside a function, a variable can be scoped with the keyword var Using strict mode, all variables must be defined var This helps prevent bugs because we are less likely to mess with outside code Saturday, December 15, 12
  • 49. Functions & Scope Best Practices: Write all code inside a function block Use only one var statement at the beginning of that function Saturday, December 15, 12
  • 50. Functions & Scope A function definition can appear “inside” another function This is called a “closure”, and then the inner function has access to all variables defined by the outer “closing” function It also keeps all variables alive Saturday, December 15, 12
  • 51. Functions & Scope What is printed ? Why ? function Counter(max) {   var val = 0;   return function() { return (val < max) ? val++ : false; }; } var c = Counter(10); while (c()) {   console.log(c()); } Saturday, December 15, 12
  • 52. Functions Q & A Saturday, December 15, 12
  • 53. Objects An object is a collection of key/value pairs Objects are instantiated using the object literal Properties stored in objects are fetched using the square bracket notation or the dot notation Saturday, December 15, 12
  • 54. Objects var pos = { x : 50; y : 10 }; pos.move = function(dx, dy) { this.x += dx; this.y += dy; }; Saturday, December 15, 12
  • 55. Objects Exercise Create a person object with three fields: name: your name favorite_color: your favorite color hello: a function that prints out your name and favorite color Saturday, December 15, 12
  • 56. The this Keyword Inside a function, a special keyword named ‘this’ is used to determine the function calling context When a function was called as a method, this refers to the calling object Otherwise, this refers to the global object Saturday, December 15, 12
  • 57. Arrays Arrays represent ordered data in JavaScript Arrays are normal objects, so they can have attributes other than their indexes Arrays have some array related functions we can use Saturday, December 15, 12
  • 58. Arrays var arr = []; arr.push(1, 2, 3); // add data arr.pop(); // returns 3 arr[0] = 5; // changes array console.log(arr[2]); // value at Saturday, December 15, 12
  • 59. Syntax Q & A Identifiers Reserved Words Comments Loops and Branches Functions Objects & Arrays Saturday, December 15, 12
  • 60. DOM Scripting Using JS To Manipulate the web page http://www.flickr.com/photos/jram23/3088840966/ Saturday, December 15, 12
  • 61. The DOM Stands for Document div HTML Object Model Every HTML element has a JS object “bound” to it in a special bond HTMLDivElement JS Saturday, December 15, 12
  • 62. The DOM <p id="text"></p> Can use getElementById to find a specific var t = document.getElementById('text'); element t.innerHTML = "Hello World"; Can use getElementsByTagNam e to get all elements with a specified name Saturday, December 15, 12
  • 63. DOM Agenda jQuery Introduction Handling Events Writing a simple web app Saturday, December 15, 12
  • 64. The Facts Every browser is different. Really. W3 Standard Webkit Mozilla Microsoft Saturday, December 15, 12
  • 65. Ajax Libraries Developer tools that wrap common functionality and create a standard Many options to choose from. We’ll use jQuery Saturday, December 15, 12
  • 66. jQuery Basics Wrap a normal DOM $('p').html('hello jQUery'); element inside a jQuery object <p></p> All operations on the element are performed by jQuery Unified and cross browser API Saturday, December 15, 12
  • 67. jQuery Basics: Selectors <p id="text"></p> Powerful element selection and manipulations $('p#text').html("Hello World"); Works “the same” for all mobile & desktop browsers Selector returning a jQuery Object An action to perform on the object Saturday, December 15, 12
  • 68. jQuery Actions $('div#foo').addClass('wide'); Each jQuery $('div#foo').removeClass('wide'); object $('div#foo').css('background', 'red'); supports a wide range of $('div#foo').hide(); functions to $('div#foo').show();     alter the elements Saturday, December 15, 12
  • 69. jQuery Actions Example Zebra stripe a table using jQuery $('table tr:nth-child(2n)').css('background', '#ccc'); Saturday, December 15, 12
  • 70. jQuery Events Define what to do when something happens in jQuery, “bind” a function to an event After the bind, every time the the event happens your callback is called, with the object as the “this” argument Saturday, December 15, 12
  • 71. jQuery Events document.ready scroll click select hover submit keypress Full list: http:// mousemove api.jquery.com/ category/events/ resize Saturday, December 15, 12
  • 72. jQuery Demo Build a red spotter game Game should present the user with 4 colored squares, only one is red User should click on the red square Saturday, December 15, 12
  • 73. jQuery API Other useful methods: attr - change an attribute value css - change a style attribute html - change innerHTML content data - store arbitrary data inside an element Saturday, December 15, 12
  • 74. jQuery Lab Write a web application that splits the screen into four sections. Each click on a section should display a sentence inside the clicked section Write a web app to convert time units. User should enter time in seconds, minutes or hours, and convert to all the others Use HTML5 Boilerplate and jQuery Saturday, December 15, 12
  • 76. Thank You Ynon Perek [email protected] ynonperek.com Saturday, December 15, 12