Page MenuHomePhabricator

Enable "strict" mode for NodeJS
ClosedPublic

Authored by joshuaspence on Jan 19 2015, 8:39 PM.
Tags
None
Referenced Files
F13528812: D11430.id27466.diff
Fri, Jul 26, 8:30 PM
Unknown Object (File)
Thu, Jul 25, 5:12 PM
Unknown Object (File)
Thu, Jul 25, 5:12 PM
Unknown Object (File)
Mon, Jul 22, 6:42 PM
Unknown Object (File)
Mon, Jul 22, 6:42 PM
Unknown Object (File)
Mon, Jul 22, 11:32 AM
Unknown Object (File)
Mon, Jul 22, 11:32 AM
Unknown Object (File)
Mon, Jul 15, 2:41 AM
Subscribers

Details

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

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

Repository
rP Phabricator
Lint
Lint Not Applicable
Unit
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.