How to set 'use strict' globally with JSLint
Asked Answered
H

2

9

I'm new to javascript and am trying to validate through JSLint. Where should I put "use strict" to use it globally and validate?

This gives me error "Unexpected expression 'use strict' in statement position.":

    "use strict";
    console.log('doing js in head-section');

    function helloWorld() {
        console.log('called function helloWorld()');
        alert('Hello World from a JS function showing an alert!');
    }

    function helloMyNumber() {
        console.log('called function helloMyNumber()');
        var max = 42;
        var yourLuckyNumber = prompt('Enter your lucky number (between 1 and '+ max +')');
        var myLuckyNumber = Math.floor(Math.random()*(max+1));
        var paragraph = document.getElementById('luckynumber');
        paragraph.innerHTML = paragraph.innerHTML + ' Your lucky number is: ' + yourLuckyNumber + '. Mine is: ' + myLuckyNumber + '. They ' + (yourLuckyNumber == myLuckyNumber ? 'DID ' : 'did NOT ') + 'match!';
    }



    console.log('doing JS in body-section');
    document.writeln('<p class="green">Hello World from JS within a body-section in HTML!</p>');
Hurdygurdy answered 9/2, 2016 at 16:42 Comment(0)
J
6

According to the documentation, the browser option for JSLint automatically disables use of "use strict"; at the global level. As far as I'm aware, there's no way to turn it back on.

You could turn off the browser option, and get the same predeclared globals as the browser option by using:

/*global
Audio, clearInterval, clearTimeout, document, event, history, Image, location, name, navigator, Option, screen, setInterval, setTimeout, XMLHttpRequest
*/

Alternately you could wrap all of your code in an IIFE and use "use strict"; at the top of it.

Alternately you could switch to JSHint (has more options), and use its strict: global option to allow "use strict"; at global scope.

Jungian answered 9/2, 2016 at 16:55 Comment(0)
B
1

'use strict' is typically used at the start of functions. For your code, I would just wrap it all in an IIFE, which would make 'use strict' valid

(function() {
    "use strict";
    console.log('doing js in head-section');

    function helloWorld() {
        console.log('called function helloWorld()');
        alert('Hello World from a JS function showing an alert!');
    }

    function helloMyNumber() {
        console.log('called function helloMyNumber()');
        var max = 42;
        var yourLuckyNumber = prompt('Enter your lucky number (between 1 and '+ max +')');
        var myLuckyNumber = Math.floor(Math.random()*(max+1));
        var paragraph = document.getElementById('luckynumber');
        paragraph.innerHTML = paragraph.innerHTML + ' Your lucky number is: ' + yourLuckyNumber + '. Mine is: ' + myLuckyNumber + '. They ' + (yourLuckyNumber == myLuckyNumber ? 'DID ' : 'did NOT ') + 'match!';
    }



    console.log('doing JS in body-section');
    document.writeln('<p class="green">Hello World from JS within a body-section in HTML!</p>');
})();
Bennet answered 9/2, 2016 at 16:51 Comment(1)
"use strict"; is perfectly valid at the beginning of a file.Jungian

© 2022 - 2024 — McMap. All rights reserved.