lib/rules/no-invalid-this.js
function enterFunction(node) {

            // `this` can be invalid only under strict mode.
            stack.push({
                init: !context.getScope().isStrict,
                node,
                valid: true
            });
        }
function enterFunction(node) {

            // `this` can be invalid only under strict mode.
            stack.push({
                init: !context.getScope().isStrict,
                node,
                valid: true
            });
        }
function enterFunction ( node ) { // `this` can be invalid only under strict mode. stack . push ( { init : ! context . getScope ( ) . isStrict , node , valid : true } ) ; }
Pushs new checking context into the stack.

The checking context is not initialized yet.
Because most functions don't have `this` keyword.
When `this` keyword was found, the checking context is initialized.

@param {ASTNode} node - A function node that was entered.
@returns {void}
Pushs new checking context into the stack .