问题标签 [strict-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
136 浏览

javascript - 为什么 (0 || eval) 在 Opera 中不被视为间接?

在严格模式下,间接调用eval应该this绑定到 eval 代码中的全局对象。

10.4.2:在第 5 版中,对 eval 函数的间接调用使用全局环境作为 eval 代码的变量环境和词法环境。在第 3 版中,间接评估的调用者的变量和词法环境被用作评估代码的环境。

然而,在 Opera 中,这个表达式的结果是undefined

Chrome 和 Firefox 按预期工作。

我在这里找到了这个:http: //kangax.github.com/jstests/indirect-eval-testsuite/

这是浏览器错误吗?如果是这样,它是否正在被跟踪?

另请参阅为什么某些形式的间接评估在 Opera 和 Safari 中会失败?

0 投票
2 回答
1332 浏览

javascript - 在原型(Object.defineProperty)上设置只读属性时也不例外

我在对象和适当的单元测试上创建了一个只读属性。

但是,我意识到我应该将只读属性放在原型上,而不是每个单独的实例上。我更改了我的代码,然后我的一个测试失败了。

看来,当删除原型上的只读属性时,不会抛出异常,但是当属性在对象上时,会抛出异常。

我创建了http://jsfiddle.net/pdgreen/3BGfM/来演示这个问题。我用 chrome 和 firefox 在 Mac 上确认了相同的行为。

这是正确的事情吗?为什么如果属性在对象上,会抛出异常,但在原型上,没有异常?这让我很惊讶。谁能解释为什么会这样?

0 投票
1 回答
3831 浏览

powershell - 动态参数访问默认值

我有一个 PowerShell 函数,它接受一个可选参数,使用 a 进行验证ValidateSetAttribute,并基于该值添加另一个动态参数。但是,在严格模式下,当尝试访问DynamicParam块内的参数时,并且我没有明确设置所述参数,然后我收到一个错误,即未定义变量。

该脚本在使用AB作为第一个参数调用时有效,但在省略参数时失败。有趣的是,如果我从参数定义中删除了 theParameterAttribute或 the ValidateSetAttribute,它就会起作用。

我目前的解决方法是使用访问变量$PSBoundParameters并检查是否设置了参数,如下所示:

虽然这很好用,但如果我想检查该值,它有一个缺点AA参数的默认值$PSBoundParameters也是如此,当省略参数并应用默认值时,它不会被添加。所以我需要修改我的检查以明确检查:

我不太喜欢这种解决方案,因为它会不必要地将动态参数添加与默认值联系起来。理想情况下,我希望能够更改默认值而无需触及其他任何内容。有没有办法从DynamicParam块内访问实际参数值?或者至少有可能访问参数定义并访问默认值?

0 投票
2 回答
46561 浏览

javascript - 为什么在 Javascript5 严格模式下不允许删除?

我对javascript相当陌生。我注意到,显然在“使用严格”模式下操作时,您无法删除对象。我不是删除东西的忠实拥护者(因为理论上,范围无论如何都应该处理这个问题),但我想知道删除此功能的动机是什么?

0 投票
1 回答
49 浏览

javascript - 密封对象内的局部变量可以将信息传递给全局变量吗?

不确定我的措辞是否正确,但密封对象内的局部变量可以将信息传递给全局变量吗?

0 投票
4 回答
59290 浏览

javascript - 为什么不推荐使用 body.scrollTop?

似乎body.scrollTop(and body.scrollLeft) 在 ES5 严格模式中已被弃用。DOMElement考虑到在其他s上使用这些属性似乎仍然可以,这是什么原因?

背景资料:

我有一个函数试图增加(或减少,如指定)scrollTop所有祖先的值element,直到其中一个实际发生变化。我想知道,为了保持对严格模式的抱怨,我是否应该body在父链向上移动时专门检查元素。

[显然body是指document.body]

0 投票
3 回答
6095 浏览

android - Google Map 的严格模式“在附加的堆栈跟踪中获取了资源但从未释放”异常

启动我的应用程序时,我在严格模式下遇到以下异常。就在我的登录活动关闭之后,就在我的主要活动(包含 SupportMapFragment)显示之前。

10-29 16:11:22.605:E/StrictMode(1121):在附加的堆栈跟踪中获取了资源,但从未释放。有关避免资源泄漏的信息,请参阅 java.io.Closeable。
10-29 16:11:22.605:E/StrictMode(1121):java.lang.Throwable:未调用显式终止方法“关闭”
10-29 16:11:22.605:E/StrictMode(1121):在 dalvik.system .CloseGuard.open(CloseGuard.java:184)
10-29 16:11:22.605: E/StrictMode(1121): 在 java.io.RandomAccessFile.<初始化>(RandomAccessFile.java:128)
10-29 16:11 :22.605:E/StrictMode(1121):在 maps.da< init >(未知来源)
10-29 16:11:22.605:E/StrictMode(1121):在 maps.dba(未知来源)
10-29 16: 11:22.605:E/StrictMode(1121):在 maps.mha(未知来源)
10-29 16:11:22.605: E/StrictMode(1121): 在 maps.maa(未知来源)
10-29 16:11:22.605: E/StrictMode(1121): 在 maps.mua(未知来源)
10- 29 16:11:22.605: E/StrictMode(1121): 在 maps.knc(未知来源)
10-29 16:11:22.605: E/StrictMode(1121): 在 maps.ao.b.run(未知来源)
10-29 16:11:22.605: W/System.err(1121): StrictMode VmPolicy 违反 POLICY_DEATH;关闭。

它似乎与主要活动上的 GoogleMap 有关。但究竟需要在那里关闭什么?任何想法/想法将不胜感激。

0 投票
1 回答
223 浏览

javascript - 必须在哪里设置“使用严格”来触发冻结对象的严格模式错误?

从 ES5 开始我们可以使用Object.freeze()锁定对象。

但是,如果你在草率模式下运行 JS,任何写入属性的操作都会静默失败,除非你激活了严格模式。

但是你需要在哪里设置呢?我使用模块系统(node.js/amd),因此涉及到一堆文件/范围:

  1. 最初创建对象的范围。
  2. 在对象上调用 Object.freeze() 的范围。
  3. 尝试更改对象属性的范围。
  4. 全球范围
  5. ???

其中哪一个必须具有(继承)“使用严格”指令来触发错误?

0 投票
1 回答
42 浏览

android - 特技模式打破了android父活动状态

如果这个问题看起来不够具体或过于具体,那是因为我正在尝试这个我不太了解的高级功能。

我想成为一个伟大的开发者。所以我将手机设置为严格模式,这样我就可以测试我的应用程序(我的应用程序在不处于严格模式时运行良好)。在严格模式下,应用程序以下列方式出现异常,我希望有人可以帮助我解决问题:

PenActivity 本身具有图像的网格布局。当我单击图像时,该图像会启动一个 FragmentDialog,它本身具有图像的网格布局。我正在使用 Google 的 BitmapFun 来处理位图(即 ImageFetcher)。无论如何,从 FragmentDialog 开始,当用户单击图像时,我会启动 BookActivity,并通过意图传递单击图像的路径。现在问题来了:说在 BookActivity 中,做一些工作后,我单击了一个按钮,该按钮调用finish()以便应用程序返回PenActivity打开 DialogFragment。好吧,当处于严格模式时,应用程序会进入黑屏几秒钟(2 或 3 秒),然后实际显示 PenActivity 并打开 DialogFragment。顺便说一句,DialogFragment 是全屏的。此外,如果我单击 DialogFragment 中的另一个图像,虽然它启动了 BookActivity,但 BookActivity 中显示了错误的图像。我怀疑 ImageFetcher 是问题的一部分。

因此,如果您不熟悉 BitmapFun,这可能会有点令人困惑。但请记住,我的问题是关于 StrictMode 与正常模式。我的应用程序在正常模式下运行良好。我想看看我是否能让它在严格模式下正常工作。

0 投票
3 回答
272 浏览

javascript - 存在使用 arguments.callee 而没有好的选择吗?

关于arguments.callee有很多谬误,我试图了解是否存在确实不能被可行的ES5 严格模式替代方案取代的用例。

MDN arguments.callee文档中,他们指出了 arguments.callee 的使用,没有很好的替代方法,下面的代码示例如下:

他们包含一个错误,以表明在某些情况下,argument.callee不能被符合ES5 严格模式的代码替换。

但在理解上,他们用作示例的代码可以替换为以下严格模式替代方案:

有了这一点,确实存在一些无法替换 arguments.callee 的算法?

赏金

为了赢得赏金,我希望答案包含arguments.callee使用其他解决方案将更加晦涩或不可能的地方。

在 MDN 示例中,我编写的替代版本不会改变那段代码的用法。