SlideShare una empresa de Scribd logo
1 de 34
Mohammed Irfan
 JavaScript is a stripped down version of Java 
 JavaScript does not exist outside browsers 
 JavaScript is inconsistent and buggy 
 JavaScript is not object-orientated
 Birth of Mocha, then rename to LiveScript 
 Netscape and Sun collaboration for Java in 
browsers; 
 LiveScript gets renamed to JavaScript 
 IE team reverse engineers JavaScript to JScript 
 Browser war begins 
 Standardization of JavaScript at ECMA; 
ECMAScript becomes the official name 
 Rise of Ajax 
 JavaScript libraries emerge 
 ECMAScript 5
 Semicolon insertion 
 typeof and instanceof 
 with and eval 
 == and != 
 new
 Loose Typing 
 Dynamic Objects 
 Object / Array Literals 
 Functions / Lambdas
 Self 
 prototypal inheritance 
 dynamic objects 
 Scheme 
 lambda 
 loose typing 
 Java 
 syntax 
 conventions 
 Perl 
 regular expressions
 Numbers 
 Strings 
 Booleans 
 Objects 
 Functions
 Number 
 String 
 Boolean 
 Object 
 Function 
 Array 
 Date 
 RegExp 
 Null 
 Undefined
 Only one number type 
 No integers 
 64-bit floating point IEEE-754 (aka “Double”) 
 Numbers are Objects
(a + b) + c === a + (b + c) 
Produces false for some values of a, b, c. 
Integers under 9007199254740992 (9 
quadrillion) are ok. 
9007199254740992 === 9007199254740992 + 1
a = 0.1; 
b = 0.2; 
c = 0.3; 
(a + b) + c === a + (b + c) 
> false
 Special number: Not a Number 
 Result of undefined or erroneous operations 
 Toxic: any arithmetic operation with NaN as an 
input will have NaN as a result 
 NaN is not equal to anything, including NaN 
 NaN === NaN is false 
 NaN !== NaN is true
 A sequence of 0 or more 16-bit Unicode 
characters 
 No separate character type 
 Characters are represented as strings with length 
of 1 
 Strings are immutable 
 Similar strings are equal ( === ) 
 String literals can use single or double quotes with 
 escapement. 
 Strings are Objects
> "hello".charAt(0) 
h 
> "hello, world".replace("hello", 
"goodbye") 
goodbye, world 
> "hello".toUpperCase() 
HELLO
 null = deliberately no value 
 undefined = no value assigned yet 
 Variables declared but not initialized 
 Object/array members that don't exist
 Boolean type: true or false 
 Everything else is “truthy” or “falsy” 
 0, "", NaN, null and undefined are falsy 
 Everything else is truthy 
 Boolean operations: &&, || and !
 Simple key-value pairs, like: 
 HashMaps in Java 
 Associative arrays in PHP 
 Key is a string; value can be anything 
 Key is unique within an object
var obj = new Object(); 
Or 
var obj = {}; 
These are semantically equivalent; the second is 
called object literal syntax and is more 
convenient.
obj.name = "My Name" 
var name = obj.name; 
Or 
obj["name"] = "My Name"; 
var name = obj["name"]; 
Semantically equivalent; the second uses strings 
so can be decided at run-time (and can be 
used for reserved words)
var obj = { 
name: "Carrot", 
"for": "Max", 
details: { 
color: "orange", 
size: 12 
} 
} 
> obj.details.color 
Orange 
> obj["details"]["size"] 
12
Iterate over the keys of an object: 
var obj = { 'name': 'Simon', 'age': 25 
}; 
for (var attr in obj) { 
alert (attr + ' = ' + obj[attr]); 
} 
Not to be used with Arrays
 A special type of object: Keys are whole numbers, 
not strings. 
 Use [] syntax, just like objects 
> var a = new Array(); 
> a[0] = "dog"; 
> a[1] = "cat"; 
> a[2] = "hen“; 
> a.length 
3 
 No such thing as “Associative Arrays”
More convenient notation: 
> var a = ["dog", "cat", "hen"]; 
> a.length 
3 
var a = [10, "dog", false, "elephant"]; 
(you can have mixed content in arrays)
> var a = ["dog", "cat", "hen"]; 
> a[100] = "fox"; 
> a.length 
101 
typeof a[90] == 'undefined' 
array.length is always one more than the 
highest index 
The safest way to append new items is: 
a[a.length] = item;
 New variables are declared using the var 
keyword: 
 var a; 
 var name = "my name"; 
 If you declare a variable without assigning it to 
anything, its value is undefined. 
 If you forget the var, you get a global variable. 
 Never, ever do this – not even if you mean it.
 Global variables are visible everywhere 
 Blocks do not have scope 
 Variables defined inside blocks are hoisted to 
the top and are visible outside the block 
 Functions have scope 
 Variables defined inside function are visible 
throughout the function and its inner functions
var a; 
//... 
function F() { 
var b; 
//... 
function N() { 
var c; 
//... 
}; 
}
 Three different purposes of functions: 
 as sub-routine / procedure 
 as lambda (a block of executable code) 
 as object constructor 
 Functions are first-class: 
 can be assigned to a variable 
 can be passed as argument to any function 
 can be returned from any function 
 can be a member of any object 
 can be created at run time 
 Functions can be created inside another function
function add(x, y) { 
var total = x + y; 
return total; 
} 
var add = function(x, y) { 
var total = x + y; 
return total; 
}; 
var add = function some_func(x, y) { 
var total = x + y; 
return total; 
}; 
If nothing is explicitly returned, return value is undefined
 Parameters: “They’re more like... Guidelines” 
 Missing parameters are treated as undefined: 
> add() 
NaN // addition on undefined 
 You can pass in more arguments than 
expected: 
> add(2, 3, 4) 
5 // added the first two; 4 was ignored
The arguments special variable provides access to arguments as an 
array-like object 
function add() { 
var sum = 0; 
for (var i = 0, j = arguments.length; i < j; i++) { 
sum += arguments[i]; 
} 
return sum; 
} 
> add(2, 3, 4, 5) 
14
$('#some-id').click(function(evt) { 
// do something on click event 
};
var add = function(x) { 
return function(y) { 
return x + y; 
}; 
};
function Person(name) { 
this.name = name; 
this.getName = function() { 
return this.name; 
}; 
} 
var person = new Person("some one"); 
person.getName(); 
> some one

Más contenido relacionado

La actualidad más candente

Reasoning about laziness
Reasoning about lazinessReasoning about laziness
Reasoning about laziness
Johan Tibell
 
Functional Programming with JavaScript
Functional Programming with JavaScriptFunctional Programming with JavaScript
Functional Programming with JavaScript
WebF
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
Johan Tibell
 

La actualidad más candente (20)

JavaScript Objects
JavaScript ObjectsJavaScript Objects
JavaScript Objects
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data science
 
Functional programming in JavaScript
Functional programming in JavaScriptFunctional programming in JavaScript
Functional programming in JavaScript
 
Functional Programming in Javascript - IL Tech Talks week
Functional Programming in Javascript - IL Tech Talks weekFunctional Programming in Javascript - IL Tech Talks week
Functional Programming in Javascript - IL Tech Talks week
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
 
Scala Back to Basics: Type Classes
Scala Back to Basics: Type ClassesScala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
 
Reasoning about laziness
Reasoning about lazinessReasoning about laziness
Reasoning about laziness
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScript
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)
 
Library functions in c++
Library functions in c++Library functions in c++
Library functions in c++
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operations
 
Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: Notes
 
Functional Programming with JavaScript
Functional Programming with JavaScriptFunctional Programming with JavaScript
Functional Programming with JavaScript
 
Introducing Assignment invalidates the Substitution Model of Evaluation and v...
Introducing Assignment invalidates the Substitution Model of Evaluation and v...Introducing Assignment invalidates the Substitution Model of Evaluation and v...
Introducing Assignment invalidates the Substitution Model of Evaluation and v...
 
The Functional Programming Triad of Folding, Scanning and Iteration - a first...
The Functional Programming Triad of Folding, Scanning and Iteration - a first...The Functional Programming Triad of Folding, Scanning and Iteration - a first...
The Functional Programming Triad of Folding, Scanning and Iteration - a first...
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
 
Why Haskell
Why HaskellWhy Haskell
Why Haskell
 
Joy of scala
Joy of scalaJoy of scala
Joy of scala
 
Algorithm and Programming (Array)
Algorithm and Programming (Array)Algorithm and Programming (Array)
Algorithm and Programming (Array)
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
 

Similar a The JavaScript Programming Language

Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
Varun C M
 
ES6 General Introduction
ES6 General IntroductionES6 General Introduction
ES6 General Introduction
Thomas Johnston
 

Similar a The JavaScript Programming Language (20)

An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
 
Powerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best PracticesPowerful JavaScript Tips and Best Practices
Powerful JavaScript Tips and Best Practices
 
Basics of Javascript
Basics of JavascriptBasics of Javascript
Basics of Javascript
 
JavaScript(Es5) Interview Questions & Answers
JavaScript(Es5)  Interview Questions & AnswersJavaScript(Es5)  Interview Questions & Answers
JavaScript(Es5) Interview Questions & Answers
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
 
Java script advance-auroskills (2)
Java script advance-auroskills (2)Java script advance-auroskills (2)
Java script advance-auroskills (2)
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
JavaScript Basics - GameCraft Training
JavaScript Basics - GameCraft TrainingJavaScript Basics - GameCraft Training
JavaScript Basics - GameCraft Training
 
Ajax and JavaScript Bootcamp
Ajax and JavaScript BootcampAjax and JavaScript Bootcamp
Ajax and JavaScript Bootcamp
 
25-functions.ppt
25-functions.ppt25-functions.ppt
25-functions.ppt
 
ES6 General Introduction
ES6 General IntroductionES6 General Introduction
ES6 General Introduction
 
ScalaLanguage_ch_4_5.pptx
ScalaLanguage_ch_4_5.pptxScalaLanguage_ch_4_5.pptx
ScalaLanguage_ch_4_5.pptx
 
Scala for curious
Scala for curiousScala for curious
Scala for curious
 
Introduction to Client-Side Javascript
Introduction to Client-Side JavascriptIntroduction to Client-Side Javascript
Introduction to Client-Side Javascript
 
Java Script Introduction
Java Script IntroductionJava Script Introduction
Java Script Introduction
 
Scala in a nutshell by venkat
Scala in a nutshell by venkatScala in a nutshell by venkat
Scala in a nutshell by venkat
 
JavaScript.pptx
JavaScript.pptxJavaScript.pptx
JavaScript.pptx
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
 
Ruby Basics
Ruby BasicsRuby Basics
Ruby Basics
 

Último

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Último (20)

ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 

The JavaScript Programming Language

  • 2.  JavaScript is a stripped down version of Java  JavaScript does not exist outside browsers  JavaScript is inconsistent and buggy  JavaScript is not object-orientated
  • 3.  Birth of Mocha, then rename to LiveScript  Netscape and Sun collaboration for Java in browsers;  LiveScript gets renamed to JavaScript  IE team reverse engineers JavaScript to JScript  Browser war begins  Standardization of JavaScript at ECMA; ECMAScript becomes the official name  Rise of Ajax  JavaScript libraries emerge  ECMAScript 5
  • 4.  Semicolon insertion  typeof and instanceof  with and eval  == and !=  new
  • 5.  Loose Typing  Dynamic Objects  Object / Array Literals  Functions / Lambdas
  • 6.  Self  prototypal inheritance  dynamic objects  Scheme  lambda  loose typing  Java  syntax  conventions  Perl  regular expressions
  • 7.  Numbers  Strings  Booleans  Objects  Functions
  • 8.  Number  String  Boolean  Object  Function  Array  Date  RegExp  Null  Undefined
  • 9.  Only one number type  No integers  64-bit floating point IEEE-754 (aka “Double”)  Numbers are Objects
  • 10. (a + b) + c === a + (b + c) Produces false for some values of a, b, c. Integers under 9007199254740992 (9 quadrillion) are ok. 9007199254740992 === 9007199254740992 + 1
  • 11. a = 0.1; b = 0.2; c = 0.3; (a + b) + c === a + (b + c) > false
  • 12.  Special number: Not a Number  Result of undefined or erroneous operations  Toxic: any arithmetic operation with NaN as an input will have NaN as a result  NaN is not equal to anything, including NaN  NaN === NaN is false  NaN !== NaN is true
  • 13.  A sequence of 0 or more 16-bit Unicode characters  No separate character type  Characters are represented as strings with length of 1  Strings are immutable  Similar strings are equal ( === )  String literals can use single or double quotes with escapement.  Strings are Objects
  • 14. > "hello".charAt(0) h > "hello, world".replace("hello", "goodbye") goodbye, world > "hello".toUpperCase() HELLO
  • 15.  null = deliberately no value  undefined = no value assigned yet  Variables declared but not initialized  Object/array members that don't exist
  • 16.  Boolean type: true or false  Everything else is “truthy” or “falsy”  0, "", NaN, null and undefined are falsy  Everything else is truthy  Boolean operations: &&, || and !
  • 17.  Simple key-value pairs, like:  HashMaps in Java  Associative arrays in PHP  Key is a string; value can be anything  Key is unique within an object
  • 18. var obj = new Object(); Or var obj = {}; These are semantically equivalent; the second is called object literal syntax and is more convenient.
  • 19. obj.name = "My Name" var name = obj.name; Or obj["name"] = "My Name"; var name = obj["name"]; Semantically equivalent; the second uses strings so can be decided at run-time (and can be used for reserved words)
  • 20. var obj = { name: "Carrot", "for": "Max", details: { color: "orange", size: 12 } } > obj.details.color Orange > obj["details"]["size"] 12
  • 21. Iterate over the keys of an object: var obj = { 'name': 'Simon', 'age': 25 }; for (var attr in obj) { alert (attr + ' = ' + obj[attr]); } Not to be used with Arrays
  • 22.  A special type of object: Keys are whole numbers, not strings.  Use [] syntax, just like objects > var a = new Array(); > a[0] = "dog"; > a[1] = "cat"; > a[2] = "hen“; > a.length 3  No such thing as “Associative Arrays”
  • 23. More convenient notation: > var a = ["dog", "cat", "hen"]; > a.length 3 var a = [10, "dog", false, "elephant"]; (you can have mixed content in arrays)
  • 24. > var a = ["dog", "cat", "hen"]; > a[100] = "fox"; > a.length 101 typeof a[90] == 'undefined' array.length is always one more than the highest index The safest way to append new items is: a[a.length] = item;
  • 25.  New variables are declared using the var keyword:  var a;  var name = "my name";  If you declare a variable without assigning it to anything, its value is undefined.  If you forget the var, you get a global variable.  Never, ever do this – not even if you mean it.
  • 26.  Global variables are visible everywhere  Blocks do not have scope  Variables defined inside blocks are hoisted to the top and are visible outside the block  Functions have scope  Variables defined inside function are visible throughout the function and its inner functions
  • 27. var a; //... function F() { var b; //... function N() { var c; //... }; }
  • 28.  Three different purposes of functions:  as sub-routine / procedure  as lambda (a block of executable code)  as object constructor  Functions are first-class:  can be assigned to a variable  can be passed as argument to any function  can be returned from any function  can be a member of any object  can be created at run time  Functions can be created inside another function
  • 29. function add(x, y) { var total = x + y; return total; } var add = function(x, y) { var total = x + y; return total; }; var add = function some_func(x, y) { var total = x + y; return total; }; If nothing is explicitly returned, return value is undefined
  • 30.  Parameters: “They’re more like... Guidelines”  Missing parameters are treated as undefined: > add() NaN // addition on undefined  You can pass in more arguments than expected: > add(2, 3, 4) 5 // added the first two; 4 was ignored
  • 31. The arguments special variable provides access to arguments as an array-like object function add() { var sum = 0; for (var i = 0, j = arguments.length; i < j; i++) { sum += arguments[i]; } return sum; } > add(2, 3, 4, 5) 14
  • 32. $('#some-id').click(function(evt) { // do something on click event };
  • 33. var add = function(x) { return function(y) { return x + y; }; };
  • 34. function Person(name) { this.name = name; this.getName = function() { return this.name; }; } var person = new Person("some one"); person.getName(); > some one