TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.invokeGetter (<anonymous>:3:28)怎么解决
时间: 2023-11-08 16:48:55 浏览: 681
这个错误通常在 JavaScript 的严格模式下出现,它是由于在严格模式下不能访问`caller`、`callee`和`arguments`属性所导致的。这些属性在非严格模式下是允许访问的。
要解决这个问题,你可以采取以下措施之一:
1. 迁移至严格模式兼容的代码:在你的代码中,找到使用了`caller`、`callee`或`arguments`属性的地方,并尝试使用其他替代方法或避免使用这些属性。这样可以确保代码在严格模式下运行时没有问题。
2. 移除严格模式:如果你的代码在使用严格模式时出现问题,并且你不需要严格模式的其他特性,可以尝试将代码从严格模式中移除。具体来说,你可以删除或注释掉包裹代码的`'use strict'`语句。请注意,移除严格模式可能会导致其他潜在问题的隐藏,因此请在移除之前仔细评估。
无论你选择哪种方式,都建议在修改代码之前进行适当的测试和验证,以确保修改不会引入其他问题。
相关问题
webuploader.fis.js:4920 Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at HTMLInputElement.<anonymous> (webuploader.fis.js:4920:40) at HTML
这个错误提示是因为在严格模式下,不允许对 `arguments` 对象、`caller` 属性和 `callee` 属性进行访问。在 WebUploader 的 `webuploader.fis.js` 文件中可能使用了这些不允许的语法导致了这个错误。
要解决这个问题,有两种方法:
1. 将 WebUploader 的 `webuploader.fis.js` 文件中的所有 `function` 声明改为箭头函数,因为箭头函数没有自己的 `this`,`arguments`,`super` 或 `new.target`,这些都是继承自外部函数的。
2. 在使用 WebUploader 的时候,将严格模式关闭。可以通过在 `main.js` 中设置 `Vue.config.devtools = true` 和 `Vue.config.productionTip = false` 来关闭严格模式。
```javascript
// main.js
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
Vue.config.devtools = true // 关闭严格模式
new Vue({
render: h => h(App)
}).$mount('#app')
```
以上两种方法都可以解决这个问题。
TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functio
TypeError: 'caller', 'callee', 和 'arguments' 属性在严格模式下 JavaScript 函数中不可访问,这是因为这些属性通常用于内部函数调试和堆栈跟踪,但在严格模式下,为了防止安全漏洞和滥用,JavaScript 规定这些私有属性不应在正常代码中直接获取。
当你试图在严格模式(`'use strict';`)的函数上下文中获取这些属性时,浏览器会抛出这个错误。例如:
```javascript
(function() {
'use strict';
console.log(callStack()); // TypeError: callStack is not a function
})();
```
在这个例子中,`callStack()` 是一个不存在的函数,但由于是在严格模式下,尝试访问 `caller`, `callee`, 或 `arguments` 会触发错误。
阅读全文