相关疑难解决方法(0)

在不同的Web浏览器上使用"use strict"的范围不一致(关于arguments.callee和caller)

情况:

我发现Javascript中的严格模式有些奇怪.

  • 我正在使用外部的第三方Javascript库
    • 被缩小了,
    • 拥有超过4000行代码,
    • 不是use strict在所有,
    • 正在使用arguments.callee.
  • use strict在我自己的代码中使用,在一个函数范围内.

当我调用库提供的其中一个函数时,它会抛出一个错误.然而,

  • 只有在我使用时才会抛出错误 use strict
  • 除Chrome之外的所有浏览器都会引发错误

码:

我删除了所有不相关的东西并将代码缩减为此(在jsFiddle上的在线演示):

// This comes from the minified external JS library.
// It creates a global object "foo".
(function () {
    foo = {};
    foo.bar = function (e) {
        return function () {
            var a5 = arguments.callee;
            while (a5) {
                a5 = a5.caller      // Error on this line in all browsers except Chrome …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-5

28
推荐指数
1
解决办法
2万
查看次数

标签 统计

ecmascript-5 ×1

javascript ×1