不是现代(2018)浏览器支持每个?

时间:2018-05-12 20:44:15

标签: javascript loops

今天我接受了网络技术测试。其中一个问题是

  

JavaScript中存在哪些循环?

可能的答案是:

  
      
  1. while,do-while,for,foreach
  2.   
  3. while,do-while,for
  4.   
  5. while,do-while,for-next
  6.   
  7. while,do-while,for,foreach,repeat-until
  8.   
  9. while,for,foreach,for-next
  10.   

我选择了答案1.

它似乎是错的。我收到的评论是:

  

WHILE,DO-WHILE和FOR是最常用的标准化循环   JavaScript的。现代浏览器实现ECMAScript4,和   这些不支持任何其他循环。注意:ECMAScript5最新支持   FOREACH,但在现代浏览器中仍未实现。

     

正确的答案是:while,do-while,for

我的问题是:这个评论有点过时吗?或者关于ECMAScript5完全支持的w3schools's statement是错误的吗?

1 个答案:

答案 0 :(得分:0)

编辑:

下面是一个更长的答案,为什么我认为这个问题有偏见,你的答案是正确的。然而,甚至不需要那么长的解释。你教授的引用不仅已经过时,而且w3schools的实际陈述完全符合我们的要求:

  

ECMAScript 5在所有现代浏览器中都得到完全支持*。

当你想看看引用中的*是什么时,你会看到它是因为IE9不支持ECMAScript 5,但这很好,因为你可以在下面的答案中找到,IE9确实支持foreach:)

原始答案:

不仅可能的答案列表不完整,问题有偏见且定义不明确。如果没有先前定义“现代”一词而不将其包含在问题中,你就不可能毫无偏见地回答这个问题。

问题唯一有效的方法是,如果定义了“modern”,并且每个适用的浏览器都有特定的版本号。

即使这样做了,从技术上讲也是如此,这个问题可以毫无偏见地回答,这需要保持最新的定义 - 好吧,因为,IE 5在某一点上是一个“现代浏览器”,显然不再是了。 “现代浏览器”何时不再是“现代浏览器”?这显然是一个注定要充满偏见的问题。

我略微不同意其他(非常有效)的回答,其中指出foreach可能指的是类似的for each VBScript或foreach PHP语句。由于其他答案选项包含repeat-untilfor-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