Scope determines where a variable can be accessed. A variable with local scope can only be accessed within that function. A variable with global scope can be accessed anywhere unless it's variable name is shadowed by a local variable.
To avoid unexpected or indeterminate behaviour.
Strict mode forces a variety of conventions including the use of the var keyword when declaring variables.