Do we need to put "use strict" in external js files if our html file (which imports the external js files) already has "use strict" ?
And if our external js files do not have "use strict", are they still "strict" within a HTML file that has "use strict" ?
Example:
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script>
        "use strict";
        function f() {
            // calling File1 functions (File1 does not have "use strict"; at the top)
            // are the File1 functions "strict"?
        }
    </script>
    <script src="File1.js"></script>
    <script>
        //by the way.. is it strict here ?
    </script>
</head>
<body>
</body>
</html>
First, all of your code absolutely should be run in strict mode. Core modern javascript functionality is changed (see . call() and apply()) or disfigured (silent Errors) by executing code outside of strict mode.
JavaScript in <head> or <body> You can place any number of scripts in an HTML document. Scripts can be placed in the <body> , or in the <head> section of an HTML page, or in both.
To include an external JavaScript file, we can use the script tag with the attribute src . You've already used the src attribute when using images. The value for the src attribute should be the path to your JavaScript file. This script tag should be included between the <head> tags in your HTML document.
JavaScript in External FileThe script tag provides a mechanism to allow you to store JavaScript in an external file and then include it into your HTML files.
You must put "use strict"; (or 'use strict';) at the top of each script (or function) to make them strict. In your example, the functions in File1.js will not be strict, nor will the second  block. See https://developer.mozilla.org/en/JavaScript/Strict_mode#Invoking_strict_mode for details.
If this wasn't the case, using strict mode could invalidate third-party scripts that you import, so it makes sense that strictness only applies to the scripts and individual functions that you explicitly specify.
For example:
external.js:
console.log("C: This script is non-strict.");
var g = function (x) {
    console.log("g is non-strict regardless of caller.");
    return 2 * x;
};
test.html:
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script>
        "use strict";
        console.log("A: This script element is strict.");
        function f() {
            console.log("The strictness of a script does not affect" +
                    " the strictness of external scripts, so g is" +
                    " still non-strict when called from f.");
            return g(3);
        }
    </script>
    <script src="external.js"></script>
    <script>
        f();
        console.log("B: This script element is non-strict.")
    </script>
</head>
<body>
</body>
</html>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With