javascript syntax checker - What does “use strict” do in JavaScript, and what is the reasoning behind it?

jshint / javascript / syntax / jslint / use-strict

Recently, I ran some of my JavaScript code through Crockford's JSLint, and it gave the following error:

Mark Rogers

Answer #1

Prevents Global Variable Declaration:

var tree1Data = { name: 'Banana Tree',age: 100,leafCount: 100000};

function Tree(typeOfTree) {
    var age;
    var leafCount;

    age = typeOfTree.age;
    leafCount = typeOfTree.leafCount;
    nameoftree =;

var tree1 = new Tree(tree1Data);

Uncaught SyntaxError: Duplicate data property in object literal not allowed in strict mode

"use strict";
var tree1Data = {
    name: 'Banana Tree',
    age: 100,
    leafCount: 100000,
    name:'Banana Tree'