SlideShare a Scribd company logo
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

More Related Content

What's hot (20)

JavaScript Objects
JavaScript ObjectsJavaScript Objects
JavaScript Objects
Reem Alattas
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data science
John Cant
 
Functional programming in JavaScript
Functional programming in JavaScriptFunctional programming in JavaScript
Functional programming in JavaScript
Joseph Smith
 
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
yoavrubin
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
Hassan Dar
 
Scala Back to Basics: Type Classes
Scala Back to Basics: Type ClassesScala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
Tomer Gabel
 
Reasoning about laziness
Reasoning about lazinessReasoning about laziness
Reasoning about laziness
Johan Tibell
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScript
tmont
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)
Jonas Bonér
 
Library functions in c++
Library functions in c++Library functions in c++
Library functions in c++
Neeru Mittal
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operations
Megha V
 
Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: Notes
Roberto Casadei
 
Functional Programming with JavaScript
Functional Programming with JavaScriptFunctional Programming with JavaScript
Functional Programming with JavaScript
WebF
 
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...
Philip Schwarz
 
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...
Philip Schwarz
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
Johan Tibell
 
Why Haskell
Why HaskellWhy Haskell
Why Haskell
Susan Potter
 
Joy of scala
Joy of scalaJoy of scala
Joy of scala
Maxim Novak
 
Algorithm and Programming (Array)
Algorithm and Programming (Array)Algorithm and Programming (Array)
Algorithm and Programming (Array)
Adam Mukharil Bachtiar
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
goncharenko
 
JavaScript Objects
JavaScript ObjectsJavaScript Objects
JavaScript Objects
Reem Alattas
 
Haskell for data science
Haskell for data scienceHaskell for data science
Haskell for data science
John Cant
 
Functional programming in JavaScript
Functional programming in JavaScriptFunctional programming in JavaScript
Functional programming in JavaScript
Joseph Smith
 
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
yoavrubin
 
Javascript arrays
Javascript arraysJavascript arrays
Javascript arrays
Hassan Dar
 
Scala Back to Basics: Type Classes
Scala Back to Basics: Type ClassesScala Back to Basics: Type Classes
Scala Back to Basics: Type Classes
Tomer Gabel
 
Reasoning about laziness
Reasoning about lazinessReasoning about laziness
Reasoning about laziness
Johan Tibell
 
Introduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScriptIntroduction to Functional Programming in JavaScript
Introduction to Functional Programming in JavaScript
tmont
 
Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)Pragmatic Real-World Scala (short version)
Pragmatic Real-World Scala (short version)
Jonas Bonér
 
Library functions in c++
Library functions in c++Library functions in c++
Library functions in c++
Neeru Mittal
 
Python programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operationsPython programming: Anonymous functions, String operations
Python programming: Anonymous functions, String operations
Megha V
 
Programming in Scala: Notes
Programming in Scala: NotesProgramming in Scala: Notes
Programming in Scala: Notes
Roberto Casadei
 
Functional Programming with JavaScript
Functional Programming with JavaScriptFunctional Programming with JavaScript
Functional Programming with JavaScript
WebF
 
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...
Philip Schwarz
 
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...
Philip Schwarz
 
High-Performance Haskell
High-Performance HaskellHigh-Performance Haskell
High-Performance Haskell
Johan Tibell
 
Functional Programming by Examples using Haskell
Functional Programming by Examples using HaskellFunctional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
goncharenko
 

Similar to The JavaScript Programming Language (20)

JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
Manvendra Singh
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
Bui Kiet
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
Varun C M
 
JavaScript Neednt Hurt - JavaBin talk
JavaScript Neednt Hurt - JavaBin talkJavaScript Neednt Hurt - JavaBin talk
JavaScript Neednt Hurt - JavaBin talk
Thomas Kjeldahl Nilsson
 
JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)
Beat Signer
 
javascript-variablesanddatatypes-130218094831-phpapp01.pdf
javascript-variablesanddatatypes-130218094831-phpapp01.pdfjavascript-variablesanddatatypes-130218094831-phpapp01.pdf
javascript-variablesanddatatypes-130218094831-phpapp01.pdf
AlexShon3
 
Fii Practic Frontend - BeeNear - laborator3
Fii Practic Frontend - BeeNear - laborator3Fii Practic Frontend - BeeNear - laborator3
Fii Practic Frontend - BeeNear - laborator3
BeeNear
 
JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )
Victor Verhaagen
 
Javascript fundamentals and not
Javascript fundamentals and notJavascript fundamentals and not
Javascript fundamentals and not
Salvatore Fazio
 
An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
MD Sayem Ahmed
 
Awesomeness of JavaScript…almost
Awesomeness of JavaScript…almostAwesomeness of JavaScript…almost
Awesomeness of JavaScript…almost
Quinton Sheppard
 
JavaScript.pptx
JavaScript.pptxJavaScript.pptx
JavaScript.pptx
KennyPratheepKumar
 
Fewd week5 slides
Fewd week5 slidesFewd week5 slides
Fewd week5 slides
William Myers
 
Javascript
JavascriptJavascript
Javascript
Manav Prasad
 
Ajax and JavaScript Bootcamp
Ajax and JavaScript BootcampAjax and JavaScript Bootcamp
Ajax and JavaScript Bootcamp
AndreCharland
 
Scalable JavaScript
Scalable JavaScriptScalable JavaScript
Scalable JavaScript
Ynon Perek
 
JavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQueryJavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQuery
Jamshid Hashimi
 
A Re-Introduction to JavaScript
A Re-Introduction to JavaScriptA Re-Introduction to JavaScript
A Re-Introduction to JavaScript
Simon Willison
 
Java script basics
Java script basicsJava script basics
Java script basics
Shrivardhan Limbkar
 
An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
tonyh1
 
JavaScript - An Introduction
JavaScript - An IntroductionJavaScript - An Introduction
JavaScript - An Introduction
Manvendra Singh
 
JavaScript Tutorial
JavaScript  TutorialJavaScript  Tutorial
JavaScript Tutorial
Bui Kiet
 
Javascript variables and datatypes
Javascript variables and datatypesJavascript variables and datatypes
Javascript variables and datatypes
Varun C M
 
JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)JavaScript and jQuery - Web Technologies (1019888BNR)
JavaScript and jQuery - Web Technologies (1019888BNR)
Beat Signer
 
javascript-variablesanddatatypes-130218094831-phpapp01.pdf
javascript-variablesanddatatypes-130218094831-phpapp01.pdfjavascript-variablesanddatatypes-130218094831-phpapp01.pdf
javascript-variablesanddatatypes-130218094831-phpapp01.pdf
AlexShon3
 
Fii Practic Frontend - BeeNear - laborator3
Fii Practic Frontend - BeeNear - laborator3Fii Practic Frontend - BeeNear - laborator3
Fii Practic Frontend - BeeNear - laborator3
BeeNear
 
JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )JavaScript introduction 1 ( Variables And Values )
JavaScript introduction 1 ( Variables And Values )
Victor Verhaagen
 
Javascript fundamentals and not
Javascript fundamentals and notJavascript fundamentals and not
Javascript fundamentals and not
Salvatore Fazio
 
An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
MD Sayem Ahmed
 
Awesomeness of JavaScript…almost
Awesomeness of JavaScript…almostAwesomeness of JavaScript…almost
Awesomeness of JavaScript…almost
Quinton Sheppard
 
Ajax and JavaScript Bootcamp
Ajax and JavaScript BootcampAjax and JavaScript Bootcamp
Ajax and JavaScript Bootcamp
AndreCharland
 
Scalable JavaScript
Scalable JavaScriptScalable JavaScript
Scalable JavaScript
Ynon Perek
 
JavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQueryJavaScript Fundamentals & JQuery
JavaScript Fundamentals & JQuery
Jamshid Hashimi
 
A Re-Introduction to JavaScript
A Re-Introduction to JavaScriptA Re-Introduction to JavaScript
A Re-Introduction to JavaScript
Simon Willison
 
An introduction to javascript
An introduction to javascriptAn introduction to javascript
An introduction to javascript
tonyh1
 
Ad

Recently uploaded (20)

Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
Boost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for SchoolsBoost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for Schools
Visitu
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Prachi Desai
 
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink TemplateeeeeeeeeeeeeeeeeeeeeeeeeeNeuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
alexandernoetzold
 
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
SheenBrisals
 
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
Insurance Tech Services
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
Artificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across IndustriesArtificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across Industries
SandeepKS52
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
WSO2
 
Bonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdfBonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdf
Herond Labs
 
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptxHow AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
kalichargn70th171
 
Scalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple DevicesScalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple Devices
Scalefusion
 
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATIONAI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
miso_uam
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The SequelMarketo & Dynamics can be Most Excellent to Each Other – The Sequel
Marketo & Dynamics can be Most Excellent to Each Other – The Sequel
BradBedford3
 
Boost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for SchoolsBoost Student Engagement with Smart Attendance Software for Schools
Boost Student Engagement with Smart Attendance Software for Schools
Visitu
 
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI SearchAgentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Agentic Techniques in Retrieval-Augmented Generation with Azure AI Search
Maxim Salnikov
 
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Why Indonesia’s $12.63B Alt-Lending Boom Needs Loan Servicing Automation & Re...
Prachi Desai
 
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink TemplateeeeeeeeeeeeeeeeeeeeeeeeeeNeuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
Neuralink Templateeeeeeeeeeeeeeeeeeeeeeeeee
alexandernoetzold
 
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
Eliminate the complexities of Event-Driven Architecture with Domain-Driven De...
SheenBrisals
 
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
How Insurance Policy Administration Streamlines Policy Lifecycle for Agile Op...
Insurance Tech Services
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
Artificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across IndustriesArtificial Intelligence Applications Across Industries
Artificial Intelligence Applications Across Industries
SandeepKS52
 
Best Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small BusinessesBest Inbound Call Tracking Software for Small Businesses
Best Inbound Call Tracking Software for Small Businesses
TheTelephony
 
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
WSO2
 
Bonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdfBonk coin airdrop_ Everything You Need to Know.pdf
Bonk coin airdrop_ Everything You Need to Know.pdf
Herond Labs
 
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptxHow AI Can Improve Media Quality Testing Across Platforms (1).pptx
How AI Can Improve Media Quality Testing Across Platforms (1).pptx
kalichargn70th171
 
Scalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple DevicesScalefusion Remote Access for Apple Devices
Scalefusion Remote Access for Apple Devices
Scalefusion
 
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATIONAI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
AI-ASSISTED METAMORPHIC TESTING FOR DOMAIN-SPECIFIC MODELLING AND SIMULATION
miso_uam
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Ad

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