SlideShare a Scribd company logo
Piyush Katariya 
corporate.piyush@gmail.com
 First appearance in Netscape Navigator 2.0 in Sept 1995 
 Microsoft launched JScript as alternative in Aug 1996 
 Request for Standardization in Nov 1996 
 ECMA-262 specification in June 1997 
 Third edition in Dec 1999 
 Fifth edition in Dec 2009 
 Sixth edition expected by mid 2015 
 Today – Preferred programming language of the Web 
 Not limited to Web Browsers – node.js, ringo.js
 Imperative, Object Oriented, Functional, and Prototypal 
 Dynamic 
 Single Threaded 
 Asynchronous, Event Driven 
 Sandboxed 
 God created the earth in 7 days. 
Brendan Eich created JavaScript in 10 days. 
UI Thread 
Browser 
DOM 
Work Queue 
JS Engine Layout Engine 
Operating System 
C P U G P U
 Never mind ! Everything is a var 
 var stringVariable = “JavaScript” 
 var booleanVariable = true 
 var intVariable = 10 
 var floatVariable = 10.5 
 Numbers are treated as float 
 null !== undefined 
 Falsy values – 0 (zero), NaN, ‘’, false, null, undefined
 Object is collection of key–value pairs with optional hidden link to prototype object 
 Instantiation 
 var obj = new Object() 
 var objShortHand = { } 
 var objWithInitialValue = { “property” : “value”} 
 var objTheUltimate = Object.create(parentObject) 
 Access 
 obj.property 
 obj[“property”] 
 obj.nestedObj.property 
 obj[“nestedObj”].property 
 Runtime Mutation 
 obj.newProperty = “value” 
 obj.nestedObj = { “property” : “value”} 
 obj.nestedObj[“property”] = “different value” 
 Deletion 
 delete obj.property
 Callable first class citizen 
 Linked to Function.prototype linked to Object.prototype 
 Can be passed and return as object 
 No Overloading 
 Definitions 
 var add = new Function(‘a’, ‘b’, ‘return a + b’); 
 var add = function (a, b) { return a + b; }; 
 function add(a, b) { return a + b;} 
 Blessed with 
 this 
 arguments
Function invocation (Direct Invocation) 
 add(1, 2) 
 isPalindrome(‘madam’) 
 this bound to global object !!!
Method Invocation 
 Method => a function stored as property of object 
 this bound to method holder object 
var obj = { 
value : 0, //zero 
increment : function (inc) { 
this.value += typeof inc === ‘number’ ? inc : 1; 
} 
} 
obj.increment(1) ; // 1 
obj.increment(2); // 3
var someClass = function (property) { 
this.publicProperty = property; 
var privateVariable = “value”; 
this.publicMethod = function () { 
//code for method definition 
}; 
var privateMethod = function () { 
//code for method definition 
}; 
// return this; 
}
Constructor Invocation 
 JS way of creating objects OO style 
var EmployeeClass = function (firstName, designation) { 
this.firstName = firstName; 
this.designation = designation; 
}; 
EmployeeClass.protoype.getFirstName = function () { return this.firstName;}; 
EmployeeClass.protoype.getDesignation = function () { return this.designation;}; 
var employee = new EmployeeClass(‘Piyush’, ‘Software Dev’) 
employee.getFirstName(); // ‘Piyush’ 
employee.getDesignation(); // ‘Software Dev’
Apply Invocation (Reflective Invocation) 
var argsArray = [2, 3]; 
var sum = add.apply( null, argsArray); // 3 
//OR 
var sum = add.call( null, 2, 3); //3 
var firstName = EmployeeClass.getFirstName.apply(empObject); 
//OR 
var firstName = EmployeeClass.getFirstName.call(empObject);
 Facilitates late(runtime) binding 
Function.prototype.bind = function (objToBind) { 
var self = this; 
return function () { 
var argArr = Array.prototype.slice.call(arguments); 
return self.apply(objToBind || null, argArr); 
}; 
}
 Use when some of the inputs to function are always known 
Function.prototype.curry = function () { 
var initArgs = Array.prototype.slice.call(arguments); 
var self = this; 
return function () { 
var args = Array.prototype.slice.call(arguments); 
return self.apply(null, initArgs.concat(args)) 
} 
};
 Never ever ever make use for loop again while operating on Arrays ! 
 var names = [‘Piyush’, ‘James’, ‘Shwetha’, ‘Kapil’, ‘Praveen’, ‘Matt’, ‘Nag’, ‘Shabina’] 
 map => conversion function which get executed for every element 
 names.map(function(name){ return name.substring(0, 3); }) 
 filter => logical condition function to consider only sub set of array 
 names.filter(function(name){ return name.indexOf(‘i’) > 0; }) 
 reduce => compute result by considering each element with optional initial value 
 names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; }) 
 names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; }, ‘ Madhu’) 
 sort => comparison function to order the element in custom fashion 
 names.sort() 
 names.sort(function(name1, name2) { return name1 < name2; }) 
 forEach => alternative to for loop to just focus on operation 
 names.forEach(function(name) { console.log(name); }) 
 every => does every element in array satisfies the logical condition 
 some => does at least one element in array satisfies the logical condition 
 reduceRight => same as reduce but iterates array from last to first index
 It’s a LIVE chain
 Avoid global variables and functions 
 Use parseInt(obj, 10) 
 eval function is evil ! 
 ‘===’ and ‘!== ’ for comparison 
 Never use void, becoz its operator ! 
 Always prefix var with variable declaration 
 Use semicolons everywhere at EOL 
 Never augment built in objects 
 Consider underscore.js as default choice 
 Use JSLint for code inspection 
 And of course above all, Do Meditate ! 
var clockOnce = setTimeout(fn, delay) 
 Execute function <fn> after <delay> milliseconds 
 Queue function <fn> to execute after <delay> milliseconds 
 Used to divide highly computationally complex(CPU bound) tasks 
 Cancellation => clearTimeout(clockOnce) 
var timer = setInterval(fn, delay) 
 Execute function <fn> after every <delay> milliseconds 
 Queue function <fn> to execute after every <delay> milliseconds 
 Cancellation => clearInterval(timer)
var counterModule = ( function( ) { 
var privateCount = 0; 
function changeBy(val) { 
return privateCount += val; 
} 
return { 
increment : function() { 
changeBy(1); 
}, 
decrement : function() { 
changeBy(-1); 
}, 
currentValue : function() { 
return privateCount; 
} 
}; 
} ) ( );
var Singleton = ( function () { 
var instance; 
function createInstance() { 
var object = new Object("I am the only instance"); 
return object; 
} 
return { 
getInstance : function () { 
if (! instance) { 
instance = createInstance(); 
} 
return instance; 
} 
}; 
})();
 Why ? 
 Higher level abstraction and constructs 
 Type safety 
 Declarative - More focus on WHAT need to be done instead of HOW 
 Stick to one worthy language for end to end application stack 
 Usage 
 Code in your own language 
 Compile it into JS (either offline or in browser itself ) 
 Run in browser 
 Support debugging for original language in browser using source maps 
 Options 
 CoffeeScript 
 TypeScript 
 Dart 
 ScalaJS 
 PythonJS 
 ClojureScript 
 More at this link
 Process of removing all unnecessary characters and 
modifying source code spread over single or multiple 
file without changing its functionality 
 Advantages 
 Single artifact for whole application 
 Reduced size of code 
 Obfuscated code 
 Applicable for JS and CSS
 JavaScript : The Good Parts by Douglas Crockford 
 JavaScript Pattern by Stoyan Stefanov 
 Wikipedia.org
 jQuery - for DOM access and manipulation 
 Node.js – server side JS 
 Require.js - async module loader 
 Backbone.js – client side MVC 
 Angular.js – powerpack SPA framework
Thank You

More Related Content

What's hot (20)

PPTX
Advanced Javascript
Dhruvin Shah
 
PDF
Functional Programming in Java
Premanand Chandrasekaran
 
KEY
Object oriented javascript
Garrison Locke
 
PDF
Continuations in scala (incomplete version)
Fuqiang Wang
 
PPTX
Exploring Kotlin language basics for Android App development
Jayaprakash R
 
PDF
Sprint Boot & Kotlin - Meetup.pdf
Christian Zellot
 
PPTX
jQuery (intermediate)
Madhukar Anand
 
PPTX
Functional programming principles and Java 8
Dragos Balan
 
PPTX
JavaScript Fundamentals
Lasantha Bandara
 
PDF
Model with actors and implement with Akka
Ngoc Dao
 
PPTX
Advanced Object Oriented JavaScript (prototype, closure, scope, design patterns)
raja kvk
 
PPTX
TypeScript Overview
Aniruddha Chakrabarti
 
PDF
Typescript for the programmers who like javascript
Andrei Sebastian Cîmpean
 
PDF
Oslo.versioned objects - Deep Dive
davanum
 
PDF
me-and-python
Jan Stavel
 
PPTX
Functional programing jargon
Remo Jansen
 
PDF
Modern Java Development
Peerapat Asoktummarungsri
 
PPTX
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
PDF
Swift, a quick overview
Julian Król
 
PPTX
Testing of React JS app
Aleks Zinevych
 
Advanced Javascript
Dhruvin Shah
 
Functional Programming in Java
Premanand Chandrasekaran
 
Object oriented javascript
Garrison Locke
 
Continuations in scala (incomplete version)
Fuqiang Wang
 
Exploring Kotlin language basics for Android App development
Jayaprakash R
 
Sprint Boot & Kotlin - Meetup.pdf
Christian Zellot
 
jQuery (intermediate)
Madhukar Anand
 
Functional programming principles and Java 8
Dragos Balan
 
JavaScript Fundamentals
Lasantha Bandara
 
Model with actors and implement with Akka
Ngoc Dao
 
Advanced Object Oriented JavaScript (prototype, closure, scope, design patterns)
raja kvk
 
TypeScript Overview
Aniruddha Chakrabarti
 
Typescript for the programmers who like javascript
Andrei Sebastian Cîmpean
 
Oslo.versioned objects - Deep Dive
davanum
 
me-and-python
Jan Stavel
 
Functional programing jargon
Remo Jansen
 
Modern Java Development
Peerapat Asoktummarungsri
 
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
Swift, a quick overview
Julian Król
 
Testing of React JS app
Aleks Zinevych
 

Viewers also liked (6)

PPTX
What is scala
Piyush Katariya
 
PDF
JavaScript and DOM
Jussi Pohjolainen
 
PDF
JavaScript for Enterprise Applications
Piyush Katariya
 
PPT
JavaScript & Dom Manipulation
Mohammed Arif
 
PDF
Javascript and DOM
Brian Moschel
 
PPTX
An Introduction to the DOM
Mindy McAdams
 
What is scala
Piyush Katariya
 
JavaScript and DOM
Jussi Pohjolainen
 
JavaScript for Enterprise Applications
Piyush Katariya
 
JavaScript & Dom Manipulation
Mohammed Arif
 
Javascript and DOM
Brian Moschel
 
An Introduction to the DOM
Mindy McAdams
 
Ad

Similar to JavaScript (without DOM) (20)

PPTX
Awesomeness of JavaScript…almost
Quinton Sheppard
 
PDF
JavaScript: Patterns, Part 1
Chris Farrell
 
PPTX
ES6: Features + Rails
Santosh Wadghule
 
PDF
Rediscovering JavaScript: The Language Behind The Libraries
Simon Willison
 
KEY
Javascript tid-bits
David Atchley
 
KEY
JavaScript Growing Up
David Padbury
 
PDF
JavaScript Primer
Daniel Cousineau
 
PPT
JavaScript - Programming Languages course
yoavrubin
 
KEY
Exciting JavaScript - Part I
Eugene Lazutkin
 
PPTX
Advanced JavaScript
Zsolt Mészárovics
 
PPTX
11. session 11 functions and objects
Phúc Đỗ
 
PDF
ES6 - Next Generation Javascript
RameshNair6
 
PPT
Java Script Patterns
Allan Huang
 
PPT
25-functions.ppt
JyothiAmpally
 
PDF
JavaScript Abstraction
☆ Milan Adamovsky ☆
 
PPTX
Java scriptforjavadev part2a
Makarand Bhatambarekar
 
PDF
Javascript the New Parts v2
Federico Galassi
 
PDF
Scalable JavaScript
Ynon Perek
 
PPTX
Functional Programming in Javascript - IL Tech Talks week
yoavrubin
 
PDF
Say It With Javascript
Giovanni Scerra ☃
 
Awesomeness of JavaScript…almost
Quinton Sheppard
 
JavaScript: Patterns, Part 1
Chris Farrell
 
ES6: Features + Rails
Santosh Wadghule
 
Rediscovering JavaScript: The Language Behind The Libraries
Simon Willison
 
Javascript tid-bits
David Atchley
 
JavaScript Growing Up
David Padbury
 
JavaScript Primer
Daniel Cousineau
 
JavaScript - Programming Languages course
yoavrubin
 
Exciting JavaScript - Part I
Eugene Lazutkin
 
Advanced JavaScript
Zsolt Mészárovics
 
11. session 11 functions and objects
Phúc Đỗ
 
ES6 - Next Generation Javascript
RameshNair6
 
Java Script Patterns
Allan Huang
 
25-functions.ppt
JyothiAmpally
 
JavaScript Abstraction
☆ Milan Adamovsky ☆
 
Java scriptforjavadev part2a
Makarand Bhatambarekar
 
Javascript the New Parts v2
Federico Galassi
 
Scalable JavaScript
Ynon Perek
 
Functional Programming in Javascript - IL Tech Talks week
yoavrubin
 
Say It With Javascript
Giovanni Scerra ☃
 
Ad

More from Piyush Katariya (6)

PDF
Concurrency, Parallelism And IO
Piyush Katariya
 
PDF
Handling the growth of data
Piyush Katariya
 
PDF
Expression problem
Piyush Katariya
 
PDF
My inspirations and learned lessons
Piyush Katariya
 
PPTX
Rise of the Single Page Application
Piyush Katariya
 
PPTX
Introduction to Web Application Clustering
Piyush Katariya
 
Concurrency, Parallelism And IO
Piyush Katariya
 
Handling the growth of data
Piyush Katariya
 
Expression problem
Piyush Katariya
 
My inspirations and learned lessons
Piyush Katariya
 
Rise of the Single Page Application
Piyush Katariya
 
Introduction to Web Application Clustering
Piyush Katariya
 

Recently uploaded (20)

PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 

JavaScript (without DOM)

  • 2.  First appearance in Netscape Navigator 2.0 in Sept 1995  Microsoft launched JScript as alternative in Aug 1996  Request for Standardization in Nov 1996  ECMA-262 specification in June 1997  Third edition in Dec 1999  Fifth edition in Dec 2009  Sixth edition expected by mid 2015  Today – Preferred programming language of the Web  Not limited to Web Browsers – node.js, ringo.js
  • 3.  Imperative, Object Oriented, Functional, and Prototypal  Dynamic  Single Threaded  Asynchronous, Event Driven  Sandboxed  God created the earth in 7 days. Brendan Eich created JavaScript in 10 days. 
  • 4. UI Thread Browser DOM Work Queue JS Engine Layout Engine Operating System C P U G P U
  • 5.  Never mind ! Everything is a var  var stringVariable = “JavaScript”  var booleanVariable = true  var intVariable = 10  var floatVariable = 10.5  Numbers are treated as float  null !== undefined  Falsy values – 0 (zero), NaN, ‘’, false, null, undefined
  • 6.  Object is collection of key–value pairs with optional hidden link to prototype object  Instantiation  var obj = new Object()  var objShortHand = { }  var objWithInitialValue = { “property” : “value”}  var objTheUltimate = Object.create(parentObject)  Access  obj.property  obj[“property”]  obj.nestedObj.property  obj[“nestedObj”].property  Runtime Mutation  obj.newProperty = “value”  obj.nestedObj = { “property” : “value”}  obj.nestedObj[“property”] = “different value”  Deletion  delete obj.property
  • 7.  Callable first class citizen  Linked to Function.prototype linked to Object.prototype  Can be passed and return as object  No Overloading  Definitions  var add = new Function(‘a’, ‘b’, ‘return a + b’);  var add = function (a, b) { return a + b; };  function add(a, b) { return a + b;}  Blessed with  this  arguments
  • 8. Function invocation (Direct Invocation)  add(1, 2)  isPalindrome(‘madam’)  this bound to global object !!!
  • 9. Method Invocation  Method => a function stored as property of object  this bound to method holder object var obj = { value : 0, //zero increment : function (inc) { this.value += typeof inc === ‘number’ ? inc : 1; } } obj.increment(1) ; // 1 obj.increment(2); // 3
  • 10. var someClass = function (property) { this.publicProperty = property; var privateVariable = “value”; this.publicMethod = function () { //code for method definition }; var privateMethod = function () { //code for method definition }; // return this; }
  • 11. Constructor Invocation  JS way of creating objects OO style var EmployeeClass = function (firstName, designation) { this.firstName = firstName; this.designation = designation; }; EmployeeClass.protoype.getFirstName = function () { return this.firstName;}; EmployeeClass.protoype.getDesignation = function () { return this.designation;}; var employee = new EmployeeClass(‘Piyush’, ‘Software Dev’) employee.getFirstName(); // ‘Piyush’ employee.getDesignation(); // ‘Software Dev’
  • 12. Apply Invocation (Reflective Invocation) var argsArray = [2, 3]; var sum = add.apply( null, argsArray); // 3 //OR var sum = add.call( null, 2, 3); //3 var firstName = EmployeeClass.getFirstName.apply(empObject); //OR var firstName = EmployeeClass.getFirstName.call(empObject);
  • 13.  Facilitates late(runtime) binding Function.prototype.bind = function (objToBind) { var self = this; return function () { var argArr = Array.prototype.slice.call(arguments); return self.apply(objToBind || null, argArr); }; }
  • 14.  Use when some of the inputs to function are always known Function.prototype.curry = function () { var initArgs = Array.prototype.slice.call(arguments); var self = this; return function () { var args = Array.prototype.slice.call(arguments); return self.apply(null, initArgs.concat(args)) } };
  • 15.  Never ever ever make use for loop again while operating on Arrays !  var names = [‘Piyush’, ‘James’, ‘Shwetha’, ‘Kapil’, ‘Praveen’, ‘Matt’, ‘Nag’, ‘Shabina’]  map => conversion function which get executed for every element  names.map(function(name){ return name.substring(0, 3); })  filter => logical condition function to consider only sub set of array  names.filter(function(name){ return name.indexOf(‘i’) > 0; })  reduce => compute result by considering each element with optional initial value  names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; })  names.reduce(function(name1, name2) { return name1 + ‘ , ’ + name2; }, ‘ Madhu’)  sort => comparison function to order the element in custom fashion  names.sort()  names.sort(function(name1, name2) { return name1 < name2; })  forEach => alternative to for loop to just focus on operation  names.forEach(function(name) { console.log(name); })  every => does every element in array satisfies the logical condition  some => does at least one element in array satisfies the logical condition  reduceRight => same as reduce but iterates array from last to first index
  • 16.  It’s a LIVE chain
  • 17.  Avoid global variables and functions  Use parseInt(obj, 10)  eval function is evil !  ‘===’ and ‘!== ’ for comparison  Never use void, becoz its operator !  Always prefix var with variable declaration  Use semicolons everywhere at EOL  Never augment built in objects  Consider underscore.js as default choice  Use JSLint for code inspection  And of course above all, Do Meditate ! 
  • 18. var clockOnce = setTimeout(fn, delay)  Execute function <fn> after <delay> milliseconds  Queue function <fn> to execute after <delay> milliseconds  Used to divide highly computationally complex(CPU bound) tasks  Cancellation => clearTimeout(clockOnce) var timer = setInterval(fn, delay)  Execute function <fn> after every <delay> milliseconds  Queue function <fn> to execute after every <delay> milliseconds  Cancellation => clearInterval(timer)
  • 19. var counterModule = ( function( ) { var privateCount = 0; function changeBy(val) { return privateCount += val; } return { increment : function() { changeBy(1); }, decrement : function() { changeBy(-1); }, currentValue : function() { return privateCount; } }; } ) ( );
  • 20. var Singleton = ( function () { var instance; function createInstance() { var object = new Object("I am the only instance"); return object; } return { getInstance : function () { if (! instance) { instance = createInstance(); } return instance; } }; })();
  • 21.  Why ?  Higher level abstraction and constructs  Type safety  Declarative - More focus on WHAT need to be done instead of HOW  Stick to one worthy language for end to end application stack  Usage  Code in your own language  Compile it into JS (either offline or in browser itself )  Run in browser  Support debugging for original language in browser using source maps  Options  CoffeeScript  TypeScript  Dart  ScalaJS  PythonJS  ClojureScript  More at this link
  • 22.  Process of removing all unnecessary characters and modifying source code spread over single or multiple file without changing its functionality  Advantages  Single artifact for whole application  Reduced size of code  Obfuscated code  Applicable for JS and CSS
  • 23.  JavaScript : The Good Parts by Douglas Crockford  JavaScript Pattern by Stoyan Stefanov  Wikipedia.org
  • 24.  jQuery - for DOM access and manipulation  Node.js – server side JS  Require.js - async module loader  Backbone.js – client side MVC  Angular.js – powerpack SPA framework