According to [ES6 6.7.1.3] Invariants of the Essential Internal Methods: If a property P is described as a data property with Desc.[[Value]] equal to v and Desc.[[Writable]] and Desc.[[Configurable]] are both false, then the SameValue must be returned for the Desc.[[Value]] attribute of the property on all future calls to [[GetOwnProperty]] ( P ). [ES6 6.7.1.3]: http://www.ecma-international.org/ecma-262/6.0/#sec-invariants-of-the-essential-internal-methods Testcase against `Function#arguments` ```js function f() { return Object.getOwnPropertyDescriptor(f, 'arguments'); } Object.getOwnPropertyDescriptor(f, 'arguments'); // value: null, writable: false, configurable: false f(); // value: Arguments[], writable: false, configurable: false ``` Testcase against `Function#caller` ```js function g() { return Object.getOwnPropertyDescriptor(g, 'caller'); } function h() { return g(); } Object.getOwnPropertyDescriptor(g, 'caller'); // value: null, writable: false, configurable: false h(); // value: function h(), writable: false, configurable: false ``` Suggested fix: Use getters. Similar bug: Bug 151348