Issue 1: scope (SCOPE)
1 (function() {2 "use strict"; 3 var a = b = 5; 4 })(); 5 Console.log (b);
What does the console print?
Answer:
The above code will print out 5
.
The pitfall of this problem is that there are two assignments in the immediate execution function expression (iife), but the variables are a
declared using keywords var
. This means that it a
is a local variable of the function. In contrast, it b
is assigned to the global scope (that is, the global variable).
Another pitfall of this problem is that "strict mode" () is not used in the function ‘use strict‘;
. If strict mode is turned on, then the code will error "uncaught referenceerror:b is not defined". Keep in mind that if this is the expected behavior, strict mode requires that you explicitly refer to the global scope. So, you need to write like this:
1 (function () {2 ' use strict '; 3 var a = b = 5; 4 }) (); 5 Console.log (b);
Note: In strict mode, Firefox is still output 5, and 360 browser only error is "uncaught referenceerror:b are not defined".
Go to typical JavaScript face question