今天我接受了网络技术测试。其中一个问题是
JavaScript中存在哪些循环?
可能的答案是:
- while,do-while,for,foreach
- while,do-while,for
- while,do-while,for-next
- while,do-while,for,foreach,repeat-until
- while,for,foreach,for-next
醇>
我选择了答案1.
它似乎是错的。我收到的评论是:
WHILE,DO-WHILE和FOR是最常用的标准化循环 JavaScript的。现代浏览器实现ECMAScript4,和 这些不支持任何其他循环。注意:ECMAScript5最新支持 FOREACH,但在现代浏览器中仍未实现。
正确的答案是:while,do-while,for
我的问题是:这个评论有点过时吗?或者关于ECMAScript5完全支持的w3schools's statement是错误的吗?
答案 0 :(得分:0)
下面是一个更长的答案,为什么我认为这个问题有偏见,你的答案是正确的。然而,甚至不需要那么长的解释。你教授的引用不仅已经过时,而且w3schools的实际陈述完全符合我们的要求:
ECMAScript 5在所有现代浏览器中都得到完全支持*。
当你想看看引用中的*
是什么时,你会看到它是因为IE9不支持ECMAScript 5,但这很好,因为你可以在下面的答案中找到,IE9确实支持foreach:)
不仅可能的答案列表不完整,问题有偏见且定义不明确。如果没有先前定义“现代”一词而不将其包含在问题中,你就不可能毫无偏见地回答这个问题。
问题唯一有效的方法是,如果定义了“modern”,并且每个适用的浏览器都有特定的版本号。
即使这样做了,从技术上讲也是如此,这个问题可以毫无偏见地回答,这需要保持最新的定义 - 好吧,因为,IE 5在某一点上是一个“现代浏览器”,显然不再是了。 “现代浏览器”何时不再是“现代浏览器”?这显然是一个注定要充满偏见的问题。
我略微不同意其他(非常有效)的回答,其中指出foreach
可能指的是类似的for each
VBScript或foreach
PHP语句。由于其他答案选项包含repeat-until
和for-next
等字符串,我认为重点是选择正确的关键字/字符串,而不是正确的“语句”。
最后,根据Mozilla开发人员网络文档(这是查找涉及现代Web开发的任何内容的绝佳来源),每个现代浏览器都支持foreach
回IE9:
Feature Chrome Edge Firefox Internet Explorer Opera Safari
foreach Yes Yes 1.5 9 Yes Yes
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach