SlideShare a Scribd company logo
JavaScript
                        The Ubiquitous Language
Friday, June 24, 2011
What Is It?

                            How Can I Use It?




                                                JavaScript

                                                             Why Should I Care?

                        How Does It Work?




Friday, June 24, 2011
What Is JavaScript?
                        A quick survey of what it is and isn't.




Friday, June 24, 2011
Influences
           • Invented by Brendan Eich in 1995
           • Initially no one took it seriously
           • Resembles the earlier NewtonScript in many ways
           • Designed to work well within a constrained
                environment

           • "Feels" a little like Python, but different, too
           • C inspired syntax
Friday, June 24, 2011
What's In A Name?

           • Mocha, LiveScript, &
               EcmaScript
                                     YES

           • JScript & ActiveScript SORT OF
           • JQuery            NOT REALLY
           • Java                     NO
           • The "J" in both AJaX and JSON


Friday, June 24, 2011
Present Realities
           • Not just for browsers.
                • It's a full-featured, general-purpose language.
           • It's a modern interpreted language.
                • Good support for object-oriented paradigms.
                • Also good support for functional programming.
                • And even aspect-oriented or genetic programming.
Friday, June 24, 2011
Why JavaScript?
                        Why should I learn this thing anyway?




Friday, June 24, 2011
It's Ubiquitous
           • Its rough start kept it from being a target, and it had
                time to spread everywhere.

           • Historically it is unmatched.
           • It's on every mainstream browser.
           • There are many stand-alone engines.
           • There are a handful of server-side systems.
           • It's even embedded in things like PDF and Flash.
Friday, June 24, 2011
The Browser Situation
           • Fighting for the top spot:
             • Chrome
             • Safari
             • Firefox
           • Also quite good:
             • Opera
           • It exists:
             • Microsoft Internet Explorer

Friday, June 24, 2011
The Open Engine Situation
           • Also driven by competition.
           • Three contenders for top spot:
             • V8
             • JavaScriptCore
             • SpiderMonkey
           • Other options are available:
             • Rhino
             • K7

Friday, June 24, 2011
The Server Situation
           • Less competitive than browsers
               and engines.

           • All rely on the open engines.
           • One big player:
             • Node
           • Others of note:
             • Narwhal
             • Flusspferd

Friday, June 24, 2011
The Toolkit Situation
           • Many frameworks and toolkits
               are built on top of JavaScript:

                • Dojo
                • JQuery
                • Prototype
                • MooTools
                • YUI
                • ExtJS

Friday, June 24, 2011
The Overall Situation
           • Initially seen as a toy, it was left alone and it matured.
           • Many modern implementations do JIT compilation.
           • It's already quite fast and efficient.
           • Several big companies have stakes in it.
           • It's driven by competition and getting better & better.
           • It's poised to become the most popular computer
                language the world has yet seen.

Friday, June 24, 2011
What’s the Syntax Like?
                        What are the technical details of the language?




Friday, June 24, 2011
The Basics

           • Operators, loops, and
               conditionals similar to C

           • But, variables are dynamically
               typed

           • "Optional" semicolons (never
               omit them)

           • "Optional" var keyword (never
               omit it)




Friday, June 24, 2011
Simple Variable Types
           • Booleans
           • Numbers
           • Predefined constants:
             • true
             • false
             • undefined
             • Infinity
             •NaN


Friday, June 24, 2011
Arrays
           • Used for holding ordered items.
           • Items need not be of the same
               type or even scalar.

           • Indexing syntax works as
               expected and is zero-based:
               a[1]=1 for [0,1,true]

           • A length property is
               maintained: a.length is 3.

           • Not for associative arrays.

Friday, June 24, 2011
Text
           • Strings
             • Similar to arrays
             • Many built-in methods
             • Literals: 'val' and "val"
           • Regular Expressions
             • Support most popular
                    expressions

                • Literals: /pattern/flags

Friday, June 24, 2011
Objects
           • Used for holding named items.
           • Items need not be of the same
               type or even scalar.

           • Item keys don't need quotes.
           • Support array indexing.
           • Use for associative arrays.
           • Predefined sentinel null is
               distinct from {}.



Friday, June 24, 2011
Dates

           • JavaScript provides a pre-
               defined Date object.

           • It holds a full timestamp, not
               just a date.

           • It supports a few different
               constructor signatures.

           • It features lots of methods to
               work with individual parts.




Friday, June 24, 2011
Math
           • The global Math object provides
               many basic mathematical functions
               and constants.

           • Math.abs, Math.ceil,
               Math.floor, Math.round,
               Math.log, Math.exp, Math.max,
               Math.min, Math.sin, Math.cos,
               Math.tan, Math.sqrt,
               Math.random, etc.

           • Math.PI, Math.E, Math.SQRT2,
               Math.LN2, Math.LN10, etc.



Friday, June 24, 2011
Functions
           • Functions are full-class citizens in JavaScript.
           • Functions can be passed into other functions.
           • Functions can return functions.
           • Partials, curries, closures, etc. are all good.
           • Anonymous functions are fine.
           • Functional programming, à la LISP, but without all
                the parentheses.

Friday, June 24, 2011
Friday, June 24, 2011
Scope
           • Scope is defined only by
               function blocks.

           • Closures can sometimes be
               surprising to those not used to
               them.

           • Anonymous functions are often
               used to control scope.

           • Enclosing scopes are also
               searched.



Friday, June 24, 2011
Objects Revisited
           • The combination of first-class
               functions and associative arrays
               leads to "real" objects.

           • Members may be public or
               private.

           • All JavaScript objects inherit
               from a base Object.

           • Object inheritance is a little
               different from what may be
               familiar...



Friday, June 24, 2011
Inheritance
           • JavaScript uses differential
               inheritance (a variation of
               prototypal inheritance)

           • There are no classes.
           • No "protected" equivalent.
           • Objects inherit from similar
               objects and declare differences.

           • Links to prototypes are
               preserved.



Friday, June 24, 2011
How Does One Use
                            JavaScript?
                        What about debuggers and environments?




Friday, June 24, 2011
Different Environments,
                           Different Debuggers
           • All the command-line examples in this presentation
                were entered live into node.

           • It can also be used for running scripts.
           • Most modern browsers also have their own
                environments for inspecting JavaScript and even
                trying code live.

           • These environments vary greatly in quality; in
                particular, don't expect too much in the mobile world.

Friday, June 24, 2011
Firefox (Firebug)




                         The first really good offering.

Friday, June 24, 2011
Safari & Chrome
                               (Web Inspector)




                        Keeps pressure on Firefox & Firebug.

Friday, June 24, 2011
Opera (Dragonfly)




Friday, June 24, 2011
MSIE (Developer Tools)




               First packaged with version 8. The Developer Toolbar
                           is available for prior versions.
Friday, June 24, 2011
Where Can I Learn
                             More?
                        A short list of selected references.




Friday, June 24, 2011
A Few Sites of Interest
           • shouldilearnjavascript.com
           • developer.mozilla.org/en/JavaScript
           • dojotoolkit.org
           • nodejs.org
           • npmjs.org
           • getfirebug.com
           • trac.webkit.org/wiki/WebInspector
           • opera.com/dragonfly/
           • msdn.microsoft.com/library/dd565622


Friday, June 24, 2011

More Related Content

Viewers also liked (11)

PDF
NodeJs Intro - JavaScript Zagreb Meetup #1
Tomislav Capan
 
PDF
Intro to JavaScript
Jussi Pohjolainen
 
PDF
Intro to javascript (4 week)
Jamal Sinclair O'Garro
 
PPTX
Math functions in javascript
baabtra.com - No. 1 supplier of quality freshers
 
PDF
Javascript intro for MAH
Aleksander Fabijan
 
KEY
Intro to Javascript
Kevin Ball
 
PPTX
JavaScript - Intro
Anton Tibblin
 
PDF
Intro to Javascript and jQuery
Shawn Calvert
 
PDF
Intro to JavaScript
Dan Phiffer
 
PDF
Intro to JavaScript
Yakov Fain
 
PDF
बेसिक जावा प्रोग्रामिंग हिंदी में
Chand Rook
 
NodeJs Intro - JavaScript Zagreb Meetup #1
Tomislav Capan
 
Intro to JavaScript
Jussi Pohjolainen
 
Intro to javascript (4 week)
Jamal Sinclair O'Garro
 
Javascript intro for MAH
Aleksander Fabijan
 
Intro to Javascript
Kevin Ball
 
JavaScript - Intro
Anton Tibblin
 
Intro to Javascript and jQuery
Shawn Calvert
 
Intro to JavaScript
Dan Phiffer
 
Intro to JavaScript
Yakov Fain
 
बेसिक जावा प्रोग्रामिंग हिंदी में
Chand Rook
 

Similar to JavaScript Intro (20)

PDF
Hunspell4Eclipse-democamps-grenoble-2011
olivier gattaz
 
PDF
JVM for Dummies - OSCON 2011
Charles Nutter
 
ZIP
The Game Of Life - Java‘s Siblings and Heirs are populating the Ecosystem
jexp
 
KEY
Object oriented javascript
Garrison Locke
 
PPTX
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
Wekoslav Stefanovski
 
PDF
Introducing the Ceylon Project - Gavin King presentation at QCon Beijing 2011
devstonez
 
KEY
groovy & grails - lecture 1
Alexandre Masselot
 
PPTX
Zero to Hero in Machine Learning with Keras
Boris Yakubchik
 
PDF
Jazeed about Solr - People as A Search Problem
Lucidworks (Archived)
 
PDF
Jazzed about Solr: People as a Search Problem - By Joshua Tuberville
lucenerevolution
 
PDF
A Quick Tour of JVM Languages
Stefane Fermigier
 
PDF
Sean coates fifty things and tricks, confoo 2011
Bachkoutou Toutou
 
PDF
AObench with Emscripten
Syoyo Fujita
 
PDF
Are High Level Programming Languages for Multicore and Safety Critical Conver...
InfinIT - Innovationsnetværket for it
 
PDF
Building OBO Foundry ontology using semantic web tools
Melanie Courtot
 
PDF
javerosmx-2015-marzo-groovy-java8-comparison
Domingo Suarez Torres
 
PDF
sete linguagens em sete semanas
tdc-globalcode
 
PPTX
There Is No JavaScript
Noam Kfir
 
PPTX
Noam Kfir - There is no Java Script - code.talks 2015
AboutYouGmbH
 
PDF
3 years with Clojure
Michael Klishin
 
Hunspell4Eclipse-democamps-grenoble-2011
olivier gattaz
 
JVM for Dummies - OSCON 2011
Charles Nutter
 
The Game Of Life - Java‘s Siblings and Heirs are populating the Ecosystem
jexp
 
Object oriented javascript
Garrison Locke
 
TypeScript 1.6 - How I learned to Stop Worrying and Love JavaScript
Wekoslav Stefanovski
 
Introducing the Ceylon Project - Gavin King presentation at QCon Beijing 2011
devstonez
 
groovy & grails - lecture 1
Alexandre Masselot
 
Zero to Hero in Machine Learning with Keras
Boris Yakubchik
 
Jazeed about Solr - People as A Search Problem
Lucidworks (Archived)
 
Jazzed about Solr: People as a Search Problem - By Joshua Tuberville
lucenerevolution
 
A Quick Tour of JVM Languages
Stefane Fermigier
 
Sean coates fifty things and tricks, confoo 2011
Bachkoutou Toutou
 
AObench with Emscripten
Syoyo Fujita
 
Are High Level Programming Languages for Multicore and Safety Critical Conver...
InfinIT - Innovationsnetværket for it
 
Building OBO Foundry ontology using semantic web tools
Melanie Courtot
 
javerosmx-2015-marzo-groovy-java8-comparison
Domingo Suarez Torres
 
sete linguagens em sete semanas
tdc-globalcode
 
There Is No JavaScript
Noam Kfir
 
Noam Kfir - There is no Java Script - code.talks 2015
AboutYouGmbH
 
3 years with Clojure
Michael Klishin
 
Ad

Recently uploaded (20)

PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
Advancing WebDriver BiDi support in WebKit
Igalia
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
Advancing WebDriver BiDi support in WebKit
Igalia
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Ad

JavaScript Intro

  • 1. JavaScript The Ubiquitous Language Friday, June 24, 2011
  • 2. What Is It? How Can I Use It? JavaScript Why Should I Care? How Does It Work? Friday, June 24, 2011
  • 3. What Is JavaScript? A quick survey of what it is and isn't. Friday, June 24, 2011
  • 4. Influences • Invented by Brendan Eich in 1995 • Initially no one took it seriously • Resembles the earlier NewtonScript in many ways • Designed to work well within a constrained environment • "Feels" a little like Python, but different, too • C inspired syntax Friday, June 24, 2011
  • 5. What's In A Name? • Mocha, LiveScript, & EcmaScript YES • JScript & ActiveScript SORT OF • JQuery NOT REALLY • Java NO • The "J" in both AJaX and JSON Friday, June 24, 2011
  • 6. Present Realities • Not just for browsers. • It's a full-featured, general-purpose language. • It's a modern interpreted language. • Good support for object-oriented paradigms. • Also good support for functional programming. • And even aspect-oriented or genetic programming. Friday, June 24, 2011
  • 7. Why JavaScript? Why should I learn this thing anyway? Friday, June 24, 2011
  • 8. It's Ubiquitous • Its rough start kept it from being a target, and it had time to spread everywhere. • Historically it is unmatched. • It's on every mainstream browser. • There are many stand-alone engines. • There are a handful of server-side systems. • It's even embedded in things like PDF and Flash. Friday, June 24, 2011
  • 9. The Browser Situation • Fighting for the top spot: • Chrome • Safari • Firefox • Also quite good: • Opera • It exists: • Microsoft Internet Explorer Friday, June 24, 2011
  • 10. The Open Engine Situation • Also driven by competition. • Three contenders for top spot: • V8 • JavaScriptCore • SpiderMonkey • Other options are available: • Rhino • K7 Friday, June 24, 2011
  • 11. The Server Situation • Less competitive than browsers and engines. • All rely on the open engines. • One big player: • Node • Others of note: • Narwhal • Flusspferd Friday, June 24, 2011
  • 12. The Toolkit Situation • Many frameworks and toolkits are built on top of JavaScript: • Dojo • JQuery • Prototype • MooTools • YUI • ExtJS Friday, June 24, 2011
  • 13. The Overall Situation • Initially seen as a toy, it was left alone and it matured. • Many modern implementations do JIT compilation. • It's already quite fast and efficient. • Several big companies have stakes in it. • It's driven by competition and getting better & better. • It's poised to become the most popular computer language the world has yet seen. Friday, June 24, 2011
  • 14. What’s the Syntax Like? What are the technical details of the language? Friday, June 24, 2011
  • 15. The Basics • Operators, loops, and conditionals similar to C • But, variables are dynamically typed • "Optional" semicolons (never omit them) • "Optional" var keyword (never omit it) Friday, June 24, 2011
  • 16. Simple Variable Types • Booleans • Numbers • Predefined constants: • true • false • undefined • Infinity •NaN Friday, June 24, 2011
  • 17. Arrays • Used for holding ordered items. • Items need not be of the same type or even scalar. • Indexing syntax works as expected and is zero-based: a[1]=1 for [0,1,true] • A length property is maintained: a.length is 3. • Not for associative arrays. Friday, June 24, 2011
  • 18. Text • Strings • Similar to arrays • Many built-in methods • Literals: 'val' and "val" • Regular Expressions • Support most popular expressions • Literals: /pattern/flags Friday, June 24, 2011
  • 19. Objects • Used for holding named items. • Items need not be of the same type or even scalar. • Item keys don't need quotes. • Support array indexing. • Use for associative arrays. • Predefined sentinel null is distinct from {}. Friday, June 24, 2011
  • 20. Dates • JavaScript provides a pre- defined Date object. • It holds a full timestamp, not just a date. • It supports a few different constructor signatures. • It features lots of methods to work with individual parts. Friday, June 24, 2011
  • 21. Math • The global Math object provides many basic mathematical functions and constants. • Math.abs, Math.ceil, Math.floor, Math.round, Math.log, Math.exp, Math.max, Math.min, Math.sin, Math.cos, Math.tan, Math.sqrt, Math.random, etc. • Math.PI, Math.E, Math.SQRT2, Math.LN2, Math.LN10, etc. Friday, June 24, 2011
  • 22. Functions • Functions are full-class citizens in JavaScript. • Functions can be passed into other functions. • Functions can return functions. • Partials, curries, closures, etc. are all good. • Anonymous functions are fine. • Functional programming, à la LISP, but without all the parentheses. Friday, June 24, 2011
  • 24. Scope • Scope is defined only by function blocks. • Closures can sometimes be surprising to those not used to them. • Anonymous functions are often used to control scope. • Enclosing scopes are also searched. Friday, June 24, 2011
  • 25. Objects Revisited • The combination of first-class functions and associative arrays leads to "real" objects. • Members may be public or private. • All JavaScript objects inherit from a base Object. • Object inheritance is a little different from what may be familiar... Friday, June 24, 2011
  • 26. Inheritance • JavaScript uses differential inheritance (a variation of prototypal inheritance) • There are no classes. • No "protected" equivalent. • Objects inherit from similar objects and declare differences. • Links to prototypes are preserved. Friday, June 24, 2011
  • 27. How Does One Use JavaScript? What about debuggers and environments? Friday, June 24, 2011
  • 28. Different Environments, Different Debuggers • All the command-line examples in this presentation were entered live into node. • It can also be used for running scripts. • Most modern browsers also have their own environments for inspecting JavaScript and even trying code live. • These environments vary greatly in quality; in particular, don't expect too much in the mobile world. Friday, June 24, 2011
  • 29. Firefox (Firebug) The first really good offering. Friday, June 24, 2011
  • 30. Safari & Chrome (Web Inspector) Keeps pressure on Firefox & Firebug. Friday, June 24, 2011
  • 32. MSIE (Developer Tools) First packaged with version 8. The Developer Toolbar is available for prior versions. Friday, June 24, 2011
  • 33. Where Can I Learn More? A short list of selected references. Friday, June 24, 2011
  • 34. A Few Sites of Interest • shouldilearnjavascript.com • developer.mozilla.org/en/JavaScript • dojotoolkit.org • nodejs.org • npmjs.org • getfirebug.com • trac.webkit.org/wiki/WebInspector • opera.com/dragonfly/ • msdn.microsoft.com/library/dd565622 Friday, June 24, 2011