AngularJS严格模式下访问arguments属性报错,添加$http参数后为何恢复正常?
解决严格模式下$http请求的
arguments属性访问错误 这个错误提示Accessing the 'arguments' property of a function is not allowed in strict mode,本质是严格模式下禁止直接访问函数的arguments对象——而在你的场景里,问题出在AngularJS的$http服务处理请求配置的逻辑上。
问题根源
当你没有正确配置请求头(或者headers的写法不符合预期)时,$http内部会触发一些兼容处理逻辑,这些逻辑在严格模式下会尝试访问arguments属性,从而触发报错。而当你明确指定了正确的headers配置后,$http会走标准的请求处理流程,避开了那些会访问arguments的代码分支,因此不再报错。
修正后的完整代码
$http({ method: 'POST', url: window.apiUrl, headers: { 'Content-Type': 'application/json' }, // 关键:明确指定Content-Type请求头 data: result, }).then(function (res) { debugger; console.log('succes !', res.data); $scope.ResetData(); window.alert("Successfully created"); }).catch(function (err) { debugger; console.log('error...', err); });
额外排查建议
- 检查AngularJS版本:旧版本(比如1.5及以下)的$http在严格模式下存在这类兼容性问题,建议升级到1.6+的稳定版本。
- 确认严格模式范围:确保
'use strict';的声明是在正确的作用域内(比如文件顶部或函数内部),避免不必要的严格模式触发。 - 排查其他代码:检查项目中是否有其他自定义函数直接使用了
arguments对象,这也是严格模式下常见的报错点。
内容的提问来源于stack exchange,提问作者Mathiyazhagan
相关产品推荐
相关产品推荐

