function enterFunction(node) {
			const isBlock = node.body.type === "BlockStatement",
				useStrictDirectives = isBlock
					? getUseStrictDirectives(node.body.body)
					: [];

			if (mode === "function") {
				enterFunctionInFunctionMode(node, useStrictDirectives);
			} else if (useStrictDirectives.length > 0) {
				if (isSimpleParameterList(node.params)) {
					reportAll(useStrictDirectives, mode, shouldFix(mode));
				} else {
					context.report({
						node: useStrictDirectives[0],
						messageId: "nonSimpleParameterList",
					});
					reportAllExceptFirst(useStrictDirectives, "multiple", true);
				}
			}
		}
Enter a function and either:
- Push a new nested scope onto the stack (in 'function' mode).
- Report all the Use Strict Directives (in the other modes).
@param {ASTNode} node The function declaration or expression.
@returns {void}