In a similar vein to "use strict" we could create a new directive that disallows JS features like var, prototype, == (in favor of ===). Modules with this new directive at the top of the file would be executed under these new rules. You'd be able to create new (maybe lighter weight) JS interpreters that only target this subset.
I don’t think anyone uses var anymore. Linters and prettier are doing a good job keeping codebase consistent.
Operator == has a valid use case (null or undefined check) but rarely allowed as well.
But I wouldn’t mind to have language without legacy.
<script>
var x = 1;
if(x < 5) {
// now y is global (window.y can be accessed everywhere)
// using const y = x * 2 would be inaccessible outside the if block
var y = x * 2;
console.log('double x is: " + y);
}
</script>
Besides that, var is "pulled" upwards, as if it was the first line in the function. That may have side effects.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...