SlideShare a Scribd company logo
The War is Over, and JavaScript
has won: Living Under the JS
Regime
Matt Honeycutt
@matthoneycutt
http://trycatchfail.com
About Me
Icon from icons8.com
Part 1: Defeat and Sadness
It started in the browser…
Browser Server
Mobile Embedded
It started in the browser…
Browser Server
Mobile Embedded
Then it came for the server….
Browser Server
Mobile Embedded
And it spread…
Browser Server
Mobile Embedded
And spread…
Browser Server
Mobile Embedded
JAVASCRIPT
The War is Over, and JavaScript has won: Living Under the JS Regime
Part 2: Reconstruction
The World Went Crazy
To My Old Team:
I’m so very, very sorry for what
2008-ish Matt did with jQuery. He really didn’t know
any better.
- Modern Matt
How awesome I thought my JavaScript
was…
What I actually built
Bad Memories
More Bad Memories
(function($, undefined) {
})(jQuery);
More Bad Memories
undefined = !undefined;
More Bad Memories
window.ourCompany = window.ourCompany || {};
window.ourCompany.utils = window.ourCompany.utils || {};
window.ourCompany.utils.doStuff = function() {
//...
}
The Tragedy
“…JavaScript is a
tragically important
language…”
Part 3: A Better Future, Now
This Isn’t the JavaScript that Killed Your
Father…
Then vs. Now
 Prototypical inheritance
 Lots of jQuery
 Redefined undefined
 More jQuery
 var that = this;
 jQuery
 Hoisting
 IIFEs
 Globals
 jQuery
 Classes
 Arrow functions
 Generators
 Modules
 Better libraries and frameworks
 And lots more!
 (don’t worry, we still have the bad
parts!)
The World as it Exists Today
import {Todo} from './todo';
export class Index {
constructor() {
this.heading = 'Todos';
this.todos = [];
this.todoDescription = '';
}
addTodo() {
if (this.todoDescription) {
this.todos.push(new Todo(this.todoDescription));
this.lastAction = `Added new item: ${this.todoDescription}`;
this.todoDescription = '';
}
}
}
There’s Also TypeScript
import { Component } from '@angular/core';
import { NgForm } from '@angular/forms';
@Component({
selector: 'page-user',
templateUrl: 'signup.html'
})
export class SignupPage {
signup: {username?: string, password?: string} = {};
submitted = false;
constructor(public navCtrl: NavController, public userData: UserData) {}
onSignup(form: NgForm) {
this.submitted = true;
if (form.valid) {
this.userData.signup(this.signup.username);
this.navCtrl.push(TabsPage);
}
}
}
Modern JS is Capable of Great Things!
JavaScript is better!
import {Todo} from './todo';
export class Index {
constructor() {
this.heading = 'Todos';
this.todos = [];
this.todoDescription = '';
}
addTodo() {
if (this.todoDescription) {
this.todos.push(new Todo(this.todoDescription));
this.lastAction = `Added new item: ${this.todoDescription}`;
this.todoDescription = '';
}
}
}
But it’s not perfect
But we can cope!
Demos!
Black-Belt Coping Techniques
Black-Belt Coping Techniques
Your JavaScript Bug-Out Bag
 Visual Studio Code
 NodeJS
 NPM
 Aurelia or <insert other popular framework>
 MODERN JavaScript (or TypeScript)
 Babel
 Lo-dash
Credits
 Wat presentation:
https://www.destroyallsoftware.com/talks/wat
 Wtf.js:
https://gist.github.com/MichalZalecki/c964192f8
30360ce6361
 Martin Thoma: https://martin-
thoma.com/javascript-wtf/
Pluralsight Courses
https://goo.gl/QXoOhO
Want More?
Twitter:
@matthoneycutt
Blog:
http://trycatchfail.com
Consulting:
mbhoneycutt@gmail.com

More Related Content

PDF
jQuery Behaviours
PPTX
Getting classy with ES6
PDF
Let jQuery Rock Your World
PDF
Rails GUI Development with Ext JS
PDF
Build your own trello witihin 100 LOC (with Meteor)
PPT
JavaScript: Events Handling
PDF
Introducing jQuery
KEY
ARTDM 170 Week 4: JavaScript Effects
jQuery Behaviours
Getting classy with ES6
Let jQuery Rock Your World
Rails GUI Development with Ext JS
Build your own trello witihin 100 LOC (with Meteor)
JavaScript: Events Handling
Introducing jQuery
ARTDM 170 Week 4: JavaScript Effects

What's hot (10)

PPTX
Event In JavaScript
PDF
えっ、なにそれこわい
PPT
Javascript dom event
PDF
Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
PPTX
MVVM e Caliburn Micro for Windows Phone applications
PDF
Functional Web Development using Elm
KEY
Connecting Flash and Javascript using ExternalInterface
PDF
What the FUF?
PDF
Javascript session june 2013 (iii) jquery json
KEY
ARTDM 170 Week 3: Rollovers
Event In JavaScript
えっ、なにそれこわい
Javascript dom event
Aprimorando sua Aplicação com Ext JS 4 - BrazilJS
MVVM e Caliburn Micro for Windows Phone applications
Functional Web Development using Elm
Connecting Flash and Javascript using ExternalInterface
What the FUF?
Javascript session june 2013 (iii) jquery json
ARTDM 170 Week 3: Rollovers
Ad

Similar to The War is Over, and JavaScript has won: Living Under the JS Regime (20)

PDF
How React Native Appium and me made each other shine
PDF
Reactive Type-safe WebComponents
PDF
[FEConf Korea 2017]Angular 컴포넌트 대화법
PDF
Angular2: Quick overview with 2do app example
PDF
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
PDF
Web versus Native: round 1!
PDF
Building Large jQuery Applications
PPT
jQuery Fundamentals
PDF
Frontin like-a-backer
PPTX
Unit3.pptx
PDF
Mobile Software Engineering Crash Course - C06 WindowsPhone
PDF
Hi,I have updated the code as per your requirement. Highlighted th.pdf
PDF
Migrating from Struts 1 to Struts 2
PDF
Vaadin 7 CN
PPT
Advanced Silverlight
PPT
Creating a New iSites Tool
PPTX
jQuery Ecosystem
PDF
Asynchronous Programming with JavaScript
PDF
20150516 modern web_conf_tw
PDF
Puppeteer - A web scraping & UI Testing Tool
How React Native Appium and me made each other shine
Reactive Type-safe WebComponents
[FEConf Korea 2017]Angular 컴포넌트 대화법
Angular2: Quick overview with 2do app example
How React Native, Appium and me made each other shine @ContinuousDeliveryAmst...
Web versus Native: round 1!
Building Large jQuery Applications
jQuery Fundamentals
Frontin like-a-backer
Unit3.pptx
Mobile Software Engineering Crash Course - C06 WindowsPhone
Hi,I have updated the code as per your requirement. Highlighted th.pdf
Migrating from Struts 1 to Struts 2
Vaadin 7 CN
Advanced Silverlight
Creating a New iSites Tool
jQuery Ecosystem
Asynchronous Programming with JavaScript
20150516 modern web_conf_tw
Puppeteer - A web scraping & UI Testing Tool
Ad

Recently uploaded (20)

PDF
Approach and Philosophy of On baking technology
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Machine learning based COVID-19 study performance prediction
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
KodekX | Application Modernization Development
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Network Security Unit 5.pdf for BCA BBA.
Approach and Philosophy of On baking technology
MIND Revenue Release Quarter 2 2025 Press Release
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Spectral efficient network and resource selection model in 5G networks
MYSQL Presentation for SQL database connectivity
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Machine learning based COVID-19 study performance prediction
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
The Rise and Fall of 3GPP – Time for a Sabbatical?
KodekX | Application Modernization Development
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Chapter 3 Spatial Domain Image Processing.pdf
Review of recent advances in non-invasive hemoglobin estimation
Building Integrated photovoltaic BIPV_UPV.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Reach Out and Touch Someone: Haptics and Empathic Computing
NewMind AI Weekly Chronicles - August'25 Week I
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Per capita expenditure prediction using model stacking based on satellite ima...
Network Security Unit 5.pdf for BCA BBA.

The War is Over, and JavaScript has won: Living Under the JS Regime