Enable "strict" mode for NodeJS


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.

Reviewers: Blessed Reviewers, epriestley

Reviewed By: Blessed Reviewers, epriestley

Subscribers: Korvin, epriestley

Differential Revision: https://secure.phabricator.com/D11430


joshuaspenceAuthored on
joshuaspencePushed on Jan 19 2015, 8:43 PM
Blessed Reviewers
Differential Revision
D11430: Enable "strict" mode for NodeJS
rP00faa2b2f7b5: Fix mobile action menus in Phriction