JS Fundamentals - use "strict" Flashcards
Introduction of new features in js
For a long time, JavaScript evolved without compatibility issues. New features were added to the language while old functionality didn’t change.
That had the benefit of never breaking existing code. But the downside was that any mistake or an imperfect decision made by JavaScript’s creators got stuck in the language forever.
This was the case until 2009 when ECMAScript 5 (ES5) appeared. It added new features to the language and modified some of the existing ones. To keep the old code working, most such modifications are off by default. You need to explicitly enable them with a special directive: “use strict”.
where to place “use strict”
The directive looks like a string: “use strict” or ‘use strict’. When it is located at the top of a script, the whole script works the “modern” way.
Please make sure that “use strict” is at the top of your scripts, otherwise strict mode may not be enabled.
Only comments may appear above “use strict”.
There’s no way to cancel use strict
There is no directive like “no use strict” that reverts the engine to old behavior.
Once we enter strict mode, there’s no going back.
Browser console
When you use a developer console to run code, please note that it doesn’t use strict by default.
Sometimes, when use strict makes a difference, you’ll get incorrect results.
So, how to actually use strict in the console?
First, you can try to press Shift+Enter to input multiple lines, and put use strict on top
If it doesnt work in old browsers, wrap it
If it doesn’t, e.g. in an old browser, there’s an ugly, but reliable way to ensure use strict. Put it inside this kind of wrapper:
(function() {
‘use strict’;
// ...your code here... })()
“use strict” - should we use it
The question may sound obvious, but it’s not so.
One could recommend to start scripts with “use strict”… But you know what’s cool?
Modern JavaScript supports “classes” and “modules” – advanced language structures (we’ll surely get to them), that enable use strict automatically. So we don’t need to add the “use strict” directive, if we use them.
So, for now “use strict”; is a welcome guest at the top of your scripts. Later, when your code is all in classes and modules, you may omit it.
As of now, we’ve got to know about use strict in general.