ReferenceError: deprecated caller or arguments usage
Message
Warning: ReferenceError: deprecated caller usage (Firefox) Warning: ReferenceError: deprecated arguments usage (Firefox) TypeError: 'callee' and 'caller' cannot be accessed in strict mode. (Safari)
Error type
A strict-mode-only warning that a ReferenceError
occurred. JavaScript execution won't be halted.
What went wrong?
In strict mode, the Function.caller
or Function.arguments
properties are used and shouldn't be. They are deprecated, because they leak the function caller, are non-standard, hard to optimize and potentially a performance-harmful feature.
Examples
Deprecated function.caller
or arguments.callee.caller
Function.caller
and arguments.callee.caller
are deprecated (see the reference articles for more information).
"use strict"; function myFunc() { if (myFunc.caller == null) { return 'The function was called from the top!'; } else { return 'This function\'s caller was ' + myFunc.caller; } } myFunc(); // Warning: ReferenceError: deprecated caller usage // "The function was called from the top!"
Function.arguments
Function.arguments
is deprecated (see the reference article for more information).
"use strict"; function f(n) { g(n - 1); } function g(n) { console.log('before: ' + g.arguments[0]); if (n > 0) { f(n); } console.log('after: ' + g.arguments[0]); } f(2); console.log('returned: ' + g.arguments); // Warning: ReferenceError: deprecated arguments usage
See also
- Deprecated and obsolete features
- Strict mode
Function.arguments
Function.caller
andarguments.callee.caller
License
© 2016 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-us/docs/web/javascript/reference/errors/deprecated_caller_or_arguments_usage