@vaporeon_ @wallhackio to answer question 1, basically when JavaScript was first introduced they made a small number of decisions which they later decided were REALLY questionable in terms of the security of programs. ES5 added a new mode, called "strict mode", which disabled these features. in “ordinary” JavaScript code, you have to opt into strict mode using what is called a “directive”. but when they added modules in ES6 (probably the most significant ES6 addition), they mandated that any code loaded as a module is unconditionally in strict mode. (you should always run javascript as a module if you can in the present day.)
to answer question 2, browsers don’t implement JavaScript by versions, they do it by features. so, for example, the JavaScript standard has mandated that browsers implement optimizations for “tail calls” (in ES6 i believe?) but only Safari ever did. however, many browsers have implemented lots of features from newer versions even though they didn’t implement that one and so technically don’t have full ES6 conformance. so you have to do a feature‐by‐feature comparison rather than being able to say “this browser completely supports this version”. (also there is more to browser javascript than ECMAscript; there is also the DOM which historically has willfully violated the ECMAscript spec in a few places even.) but there are websites which will do this comparison and list which features a browser supports (usually i think in terms of which test cases it passes/fails from a test suite).
@vaporeon_ @wallhackio they actually stopped using numbers but they’re on 15 (a·k·a EcmaScript 2024) right now; they release a new one each year
@wallhackio @vaporeon_ newer developments to the language, for example static blocks and private members in class declarations, are innovative and can’t be simply ported back to ES5 with the same semantics. but these weren’t a part of class declarations when they were originally introduced; people just lump them in the category of “ES6” because they associate them with post‐ES5 javascript. ES6 itself offered very little; even async/await (which are fundamental to modern JS) weren’t added until ES8.
@wallhackio @vaporeon_ ES6 was not more impactful than ES5 in terms of the fundamental behaviours of the language, as ES5 added strict mode, getters and setters, low‐level things like Object.getPrototype, Object.setPrototype, and Object.defineProperty, and so forth. Most ES6 code can be transpiled into equivalent ES5 code, whereas ES5 introduced fundamental concepts around writability, enumerability, an access which could not be ported back to ES3. However, most programmers do not take advantage of the unique qualities of JavaScript introduced by ES5 and ES6 introduced more syntactic sugar for common operations. In addition, when ES6 came out, people created transpilers back to ES5 so the ES6/ES5 distinction was more firmly established in people’s minds.
@wallhackio @vaporeon_ The organization is now called Ecma (not an acronym) but the specification is still called ECMAScript (with that capitalization) for historical reasons. Deno is currently suing Oracle, the current owners of the JavaScript trademark, to get their trademark invalidated.
@wallhackio es6 is a decade old
@akjcv not sure the desire for everything to line up nicely with easy math and simple explanations is, in fact, intelligent
@xsssm i found “imagining transgender” by david valentine to have interesting reflections on the development of this
@wallhackio @aescling sure
Administrator / Public Relations for GlitchCat. Not actually glitchy, nor a cat. I wrote the rules for this instance.
“Constitutionally incapable of not going hard” — @aescling
“Fedi Cassandra” – @Satsuma
I HAVE EXPERIENCE IN THINGS. YOU CAN JUST @ ME.
I work for a library but I post about Zelda fanfiction.