0

我最近将我的所有项目都切换到了 ECMAScript 5 严格模式(即,"use stricts";在每个 JS 文件的顶部添加),但是以下 MDC 示例代码可以在除 Chrome 11 之外的任何地方使用。

https://developer.mozilla.org/en/Using_web_workers#The_JavaScript_code

web worker 中的代码会调用错误

Uncaught ReferenceError: onmessage is not defined.

我尝试将其var onmessage用作一种解决方法,它可以在 Chrome 11 中使用,但在 Firefox 4 中不起作用。无论如何我都不应该使用var,因为 AFAIKonmessage是一个全局变量,就像 一样window,重新定义它没有任何意义。

我应该怎么办?

4

2 回答 2

1

那么 Chrome 11 是唯一按照 ES5 所期望的方式工作的版本。请参阅https://developer.mozilla.org/en/JavaScript/Strict_mode#Simplifying_variable_uses

你有两种可能:

var onmessage = function(...

或者

function onmessage(...

于 2011-05-03T10:34:03.793 回答
0

如果您不知道这意味着什么,则不应切换到严格模式。一方面,您不能指定隐式全局变量,这是您的问题。指定self.onmessage

于 2011-05-03T20:09:31.317 回答