Behavior of non-strict global code The script does not begin with a ' use strict ' directive at the top level, so the global code (outside any function) runs in non-strict (sloppy) mode.
Line 01: x = 3.14; In non-strict mode, assigning to an undeclared identifier (no var, let, or const) creates an implicit global variable. So after line 01, x exists and equals 3.14.
Line 08: z = x; This also runs in non-strict mode. Since x is already defined (from line 01), z is set to 3.14. Therefore, statement B is correct: z is equal to 3.14.
' use strict ' ;
inside myFunction is a directive prologue for that function, not for the entire file. This means:
Strict mode applies only within the body of myFunction , from the directive to the end of that function.
It does not retroactively affect code before the function or code outside of it.
Therefore:
Statement A is incorrect: ' use strict ' is not “hoisted” to affect the whole file. It only affects the function body.
Statement C is incorrect: strict mode does not apply from line 04 to the end of the file; it only applies within myFunction, not to global lines like 01, 08, or 09.
function myFunction() {
' use strict ' ;
y = x;
}
Within this function:
Strict mode is active for its body.
In strict mode, assigning to an undeclared variable (like y here) is not allowed and results in a ReferenceError at runtime.
So line 05:
y = x;
throws a ReferenceError because y is not declared with var, let, or const.
Therefore, statement E is correct: line 05 throws an error.
Why statement D is considered correct Statement D says: ' use strict ' has an effect only on line 05.
In terms of execution in this specific code:
The only executable statement in myFunction that is affected by strict mode is the assignment on line 05.
The directive itself on line 04 is not a “normal” runtime operation; it is a directive that sets the mode.
There are no other statements inside the function that behave differently under strict mode; only the line that assigns to the undeclared variable shows a strict-mode effect.
So, describing the practical execution behavior of this snippet, strict mode manifests its effect only on line 05, making statement D correct in this context.
Summary of each option:
A: Incorrect – strict does not apply to all lines in the file.
B: Correct – z becomes 3.14 in non-strict global code.
C: Incorrect – strict does not affect code outside the function.
D: Correct – in this code, the only behavioral effect of strict mode is on line 05.
E: Correct – line 05 throws a ReferenceError due to assignment to undeclared y under strict mode.
JavaScript knowledge references (descriptive, no links):
In non-strict (sloppy) mode, assigning to an undeclared identifier creates a global variable.
' use strict ' inside a function body enables strict mode for that function only.
In strict mode, assigning to an undeclared variable results in a ReferenceError.
Directive prologues ( ' use strict ' ) affect only their containing function or script, not other scopes.
==================================================
Submit