SlideShare une entreprise Scribd logo
1  sur  76
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Gil Fink
 
Javascript built in String Functions
Javascript built in String FunctionsJavascript built in String Functions
Javascript built in String FunctionsAvanitrambadiya
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptAmit Tyagi
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptLaurence Svekis ✔
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypesVarun C M
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOMMindy McAdams
 
Form using html and java script validation
Form using html and java script validationForm using html and java script validation
Form using html and java script validationMaitree Patel
 
Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Aaron Gustafson
 
JavaScript - Chapter 6 - Basic Functions
 JavaScript - Chapter 6 - Basic Functions JavaScript - Chapter 6 - Basic Functions
JavaScript - Chapter 6 - Basic FunctionsWebStackAcademy
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced JavascriptAdieu
 
1 03 - CSS Introduction
1 03 - CSS Introduction1 03 - CSS Introduction
1 03 - CSS Introductionapnwebdev
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScriptShahDhruv21
 
Datatype in JavaScript
Datatype in JavaScriptDatatype in JavaScript
Datatype in JavaScriptRajat Saxena
 
3.2 javascript regex
3.2 javascript regex3.2 javascript regex
3.2 javascript regexJalpesh Vasa
 

Tendances (20)

Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Javascript built in String Functions
Javascript built in String FunctionsJavascript built in String Functions
Javascript built in String Functions
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScript
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
 
Java script
Java scriptJava script
Java script
 
JQuery introduction
JQuery introductionJQuery introduction
JQuery introduction
 
An Introduction to the DOM
An Introduction to the DOMAn Introduction to the DOM
An Introduction to the DOM
 
Form using html and java script validation
Form using html and java script validationForm using html and java script validation
Form using html and java script validation
 
Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]Fundamental JavaScript [UTC, March 2014]
Fundamental JavaScript [UTC, March 2014]
 
JavaScript - Chapter 6 - Basic Functions
 JavaScript - Chapter 6 - Basic Functions JavaScript - Chapter 6 - Basic Functions
JavaScript - Chapter 6 - Basic Functions
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
1 03 - CSS Introduction
1 03 - CSS Introduction1 03 - CSS Introduction
1 03 - CSS Introduction
 
Java Script ppt
Java Script pptJava Script ppt
Java Script ppt
 
JAVA AWT
JAVA AWTJAVA AWT
JAVA AWT
 
Jquery
JqueryJquery
Jquery
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScript
 
Datatype in JavaScript
Datatype in JavaScriptDatatype in JavaScript
Datatype in JavaScript
 
3.2 javascript regex
3.2 javascript regex3.2 javascript regex
3.2 javascript regex
 
Javascript
JavascriptJavascript
Javascript
 

En vedette

Web Programming Intro
Web Programming IntroWeb Programming Intro
Web Programming IntroYnon Perek
 
Scalable JavaScript
Scalable JavaScriptScalable JavaScript
Scalable JavaScriptYnon Perek
 
03 Advanced JavaScript
03 Advanced JavaScript03 Advanced JavaScript
03 Advanced JavaScriptYnon Perek
 
Frontend Engineer Toolbox
Frontend Engineer ToolboxFrontend Engineer Toolbox
Frontend Engineer ToolboxYnon Perek
 
JavaScript DOM Manipulations
JavaScript DOM ManipulationsJavaScript DOM Manipulations
JavaScript DOM ManipulationsYnon Perek
 
основні теги мови Html
основні теги мови Htmlосновні теги мови Html
основні теги мови HtmlLarisa023
 
01 Mobile Web Introduction
01 Mobile Web Introduction01 Mobile Web Introduction
01 Mobile Web IntroductionYnon Perek
 
Refactoring out of the mess
Refactoring out of the messRefactoring out of the mess
Refactoring out of the messwolframkriesing
 
ES6Katas.org - an introduction and the story behind
ES6Katas.org - an introduction and the story behindES6Katas.org - an introduction and the story behind
ES6Katas.org - an introduction and the story behindwolframkriesing
 
Диплом программиста получают в Витебском госуниверситете
Диплом программиста получают в Витебском госуниверситетеДиплом программиста получают в Витебском госуниверситете
Диплом программиста получают в Витебском госуниверситетеLiliya Alizarchik
 
маркетинг кит - Seo - email version (01.01.2015)
маркетинг кит - Seo - email version (01.01.2015)маркетинг кит - Seo - email version (01.01.2015)
маркетинг кит - Seo - email version (01.01.2015)SEOEXPERT_Kazakhstan
 
завуч и директор
завуч и директорзавуч и директор
завуч и директорOlga Gorbenko
 
Presentationfor lnl
Presentationfor lnlPresentationfor lnl
Presentationfor lnlWebFX
 
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)Tuning and Optimizing U-SQL Queries (SQLPASS 2016)
Tuning and Optimizing U-SQL Queries (SQLPASS 2016)Michael Rys
 
САЙТ ГИМНАЗИИ
САЙТ ГИМНАЗИИ САЙТ ГИМНАЗИИ
САЙТ ГИМНАЗИИ Olga Gorbenko
 

En vedette (20)

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

Plus de Ynon Perek

09 performance
09 performance09 performance
09 performanceYnon Perek
 
Mobile Web Intro
Mobile Web IntroMobile Web Intro
Mobile Web IntroYnon Perek
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threadsYnon Perek
 
Mobile Devices
Mobile DevicesMobile Devices
Mobile DevicesYnon Perek
 
Architecture app
Architecture appArchitecture app
Architecture appYnon Perek
 
Unit Testing JavaScript Applications
Unit Testing JavaScript ApplicationsUnit Testing JavaScript Applications
Unit Testing JavaScript ApplicationsYnon Perek
 
How to write easy-to-test JavaScript
How to write easy-to-test JavaScriptHow to write easy-to-test JavaScript
How to write easy-to-test JavaScriptYnon Perek
 
Introduction to Selenium and Ruby
Introduction to Selenium and RubyIntroduction to Selenium and Ruby
Introduction to Selenium and RubyYnon Perek
 
Introduction To Web Application Testing
Introduction To Web Application TestingIntroduction To Web Application Testing
Introduction To Web Application TestingYnon Perek
 
Qt Design Patterns
Qt Design PatternsQt Design Patterns
Qt Design PatternsYnon Perek
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application SecurityYnon Perek
 

Plus de Ynon Perek (20)

Regexp
RegexpRegexp
Regexp
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
 
09 performance
09 performance09 performance
09 performance
 
Mobile Web Intro
Mobile Web IntroMobile Web Intro
Mobile Web Intro
 
Qt multi threads
Qt multi threadsQt multi threads
Qt multi threads
 
Vimperl
VimperlVimperl
Vimperl
 
Syllabus
SyllabusSyllabus
Syllabus
 
Mobile Devices
Mobile DevicesMobile Devices
Mobile Devices
 
Network
NetworkNetwork
Network
 
Architecture app
Architecture appArchitecture app
Architecture app
 
Cryptography
CryptographyCryptography
Cryptography
 
Unit Testing JavaScript Applications
Unit Testing JavaScript ApplicationsUnit Testing JavaScript Applications
Unit Testing JavaScript Applications
 
How to write easy-to-test JavaScript
How to write easy-to-test JavaScriptHow to write easy-to-test JavaScript
How to write easy-to-test JavaScript
 
Introduction to Selenium and Ruby
Introduction to Selenium and RubyIntroduction to Selenium and Ruby
Introduction to Selenium and Ruby
 
Introduction To Web Application Testing
Introduction To Web Application TestingIntroduction To Web Application Testing
Introduction To Web Application Testing
 
Accessibility
AccessibilityAccessibility
Accessibility
 
Angularjs
AngularjsAngularjs
Angularjs
 
Js memory
Js memoryJs memory
Js memory
 
Qt Design Patterns
Qt Design PatternsQt Design Patterns
Qt Design Patterns
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Security
 

Dernier

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Dernier (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

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 : 'ynonperek@yahoo.com', email ynonperek@yahoo.com    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 ynonperek@yahoo.com ynonperek.com Saturday, December 15, 12