Page MenuHomePhabricator

Enable "strict" mode for NodeJS

Authored by joshuaspence on Jan 19 2015, 8:39 PM.
Referenced Files
F13246639: D11430.id27466.diff
Thu, May 23, 12:18 PM
F13236843: D11430.id27468.diff
Tue, May 21, 11:09 AM
Tue, May 21, 10:15 AM
Unknown Object (File)
Apr 27 2024, 6:27 AM
Unknown Object (File)
Apr 16 2024, 12:40 AM
Unknown Object (File)
Apr 14 2024, 9:47 PM
Unknown Object (File)
Apr 14 2024, 9:47 PM
Unknown Object (File)
Apr 14 2024, 9:42 PM


Group Reviewers
Blessed Reviewers
Restricted Diffusion Commit
rP53834d1471ad: Enable "strict" mode for NodeJS

In particular, this changes the behavior of NodeJS in the following ways:

  • Any attempt to get or modify the global object will result in an error.
  • null values of this will no longer be evaluated to the global object and primitive values of this will not be converted to wrapper objects.
  • Writing or deleting properties which have there writeable or configurable attributes set to false will now throw an error instead of failing silently.
  • Adding a property to an object whose extensible attribute is false will also throw an error now.
  • A functions arguments are not writeable so attempting to change them will now throw an error arguments = [...].
  • with(){} statements are gone.
  • Use of eval is effectively banned.
  • eval and arguments are not allowed as variable or function identifiers in any scope.
  • The identifiers implements, interface, let, package, private, protected, public, static and yield are all now reserved for future use (roll on ES6).
Test Plan

Verified that Aphlict was still functional.

Diff Detail

rP Phabricator
Lint Not Applicable
Tests Not Applicable

Event Timeline

joshuaspence retitled this revision from to Enable "strict" mode for NodeJS.
joshuaspence updated this object.
joshuaspence edited the test plan for this revision. (Show Details)
joshuaspence added a reviewer: epriestley.
epriestley edited edge metadata.
This revision is now accepted and ready to land.Jan 19 2015, 8:40 PM
This revision was automatically updated to reflect the committed changes.