'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
时间: 2024-08-13 11:00:47 浏览: 103
在JavaScript中,"caller", "callee", 和 "arguments" 这三个属性通常用于函数内部获取关于调用者的信息,比如谁调用了当前函数、调用的函数本身以及传递给函数的所有参数。然而,在严格模式(strict mode)下,为了提高安全性和性能,会限制对这些特性的一些访问。
- "caller": 在严格模式下,不允许直接从函数内部访问到调用者的上下文信息。
- "callee": 类似地,严格模式也禁止了获取函数自身的引用。
- "arguments": 虽然严格模式不会阻止你使用arguments对象,但其默认的行为已有所改变,例如禁止了像`arguments.callee`这样的访问,这是为了防止意外的循环引用(circular reference)。
如果你试图在严格模式的函数中使用这些属性,会抛出错误,或者它们将返回undefined。因此,在编写严格模式下的代码时,需要特别注意避免依赖这些特性。
相关问题
'caller','callee',and 'arguments' properties may not be accessed on strict mode functions or the arguments objects fon calls to them
这个错误是因为在严格模式下,访问'caller','callee'和'arguments'属性会报错。解决这个问题的方法有两种:
第一种方法是修改引入的mui.js文件,将其中使用到'caller','callee'和'arguments'的代码改成不使用这些属性的方式。然而,这个方法可能比较困难,因为需要对mui.js源代码进行修改。
第二种方法是禁用webpack打包时的严格模式。你可以通过安装插件"babel-plugin-transform-remove-strict-mode"并在.babelrc配置文件中添加"transform-remove-strict-mode"插件来实现。这样就可以解决该问题。
希望这些解决方法对你有帮助!
异常:TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mo
异常:TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them。
这个异常出现的原因是在严格模式下访问了'caller','callee'和'arguments'这些属性。在webpack打包时,默认启用了严格模式,导致这两者冲突。
解决这个问题有两种方法。一种是给函数表达式一个名字或者使用函数声明来替代访问'arguments.callee'。比如将原来的代码:
```javascript
stop = requestAnimationFrame(function () {
cxt.clearRect(0, 0, canvas.width, canvas.height)
sakuraList.update()
sakuraList.draw(cxt)
stop = requestAnimationFrame(arguments.callee)
})
```
改为:
```javascript
stop = requestAnimationFrame(asd())
function asd() {
cxt.clearRect(0, 0, canvas.width, canvas.height)
sakuraList.update()
sakuraList.draw(cxt)
stop = requestAnimationFrame(asd)
}
```
另一种方法是禁用webpack打包时的严格模式,可以使用babel-plugin-transform-remove-strict-mode插件来移除严格模式。首先使用npm install babel-plugin-transform-remove-strict-mode命令下载该插件,然后在项目的.babelrc文件中引入该插件:
```javascript
"plugins": ["transform-remove-strict-mode"]
```
通过这两种方法,可以解决这个异常问题。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functio](https://blog.csdn.net/weixin_42614080/article/details/105373523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [异常:TypeError: ‘caller‘, ‘callee‘, and ‘arguments‘ properties may not be accessed on strict ...](https://blog.csdn.net/Vixcity/article/details/128564262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文