Changes to JavaScript, Part 1: EcmaScript 5

Google TechTalks · 34K views · 2009 · 59:28

Open on YouTube

Programming language designWeb developmenttalkdated

Why Stack Overflow recommends it

Stack Overflow users link it when explaining strict mode, ES5 scoping behaviour, and the reasoning behind the ES5 changes, straight from people who worked on the standard.

Recommended by 2 people across 2 different months, 2009 to 2014.

What it is

A 2009 Google Tech Talk by Mark Miller, Waldemar Horwat and Mike Samuel explaining what changed in ECMAScript 5, the problems each change addresses, the de-facto behaviours it codifies, and the likely effect on web applications. It also touches on the Harmony direction and the Secure EcmaScript subset.

Cited in 1 Wikipedia article, including ECMAScript version history.

What people said

Recommends Cristian Sanchez · 2010-10 · Stack Overflow · on “When was the last major revision of JavaScript?”

Anything based on ECMAScript 5th edition will make you future proof for at least the next few years. This is the specification most modern browsers are targeting. ECMA-262 5th Edition ECMAScript Specification [LINK] However, reading some of the great, existing javascript books will definitely do you no harm. Read " JavaScript: The Good Parts " by Douglas Crockford and " JavaScript: The Definitive Guide " by David Flanagan and you will be set since -- after all -- the language has not changed that much (though the improvements are definitely welcomed!) with regards to the fundamentals. If it comes to it and you want to learn more about some of the goodies introduced in the latest edition, the

Recommends FutureNerd · 2014-03 · Stack Overflow · on “What does "use strict" do in JavaScript, and what is the reasoning behind it?”

There's a good talk by some people who were on the ECMAScript committee: Changes to JavaScript, Part 1: ECMAScript 5" [this video] about how incremental use of the "use strict" switch allows JavaScript implementers to clean up a lot of the dangerous features of JavaScript without suddenly breaking every website in the world. Of course it also talks about just what a lot of those misfeatures are (were) and how ECMAScript 5 fixes them.

Cites Elzo Valugi · 2009-07 · Stack Overflow · on “When is it acceptable to use jQuery?”

Well, at least until EcmaScript 5 [this video] will come out and until the browsers will implement in their JavaScript Engines a common set of specifications, jQuery is the best tool that we have to solve problems cross browser. Not long ago every time you started a js file you had to start with a browser detect [LINK] function. I used prototype, mootools, dojo and lately jQuery and I am very satisfied with the help they provide.

Cites Šime Vidas · 2011-03 · Stack Overflow · on “EcmaScript 5 Google TechTalk - Scoping accident 1 example”

I'm watching this lecture: [this video] // the speaker states that "'bar' is just some function // that invokes whatever function is passed to it" function bar(fn) { fn(); } function foo() { var x = 8; bar(function baz() { return x; }); } Object.prototype.x = 'foo'; At minute 35, the above shown issue is presented. The lecturer states that some browsers will return foo instead of 8 . Why? Btw, while writing this question, I figured it out, but I'll post this question anyway because it's an interesting issue. :) Live demo: [LINK] Opera 11 alerts 'foo' , all my other browsers (including IE9) return 8 . Update: I take back what I said about having figured this out. It has something to do with the ne

Cites Šime Vidas · 2012-10 · Stack Overflow · on “What are the benefits of ES5 Strict being a fully statically scoped language?”

Unlike the default language (ES5 Default), the strict mode of JavaScript (ES5 Strict) provides restrictions which make the language fully statically scoped. The default language isn't fully statically scoped, because of these violations: assignments to undeclared variables dynamically create implied global variables, the with statement (objects are dynamic in JavaScript, so the JS engine cannot know prior to evaluation which names are properties of the object, and which names are bound to the environment), eval calls can dynamically add names to the environment, the delete operator can dynamically delete names from the environment (works for implied global variables, and variables added via