功能javascript和web浏览器javascript版本

功能javascript和web浏览器javascript版本,javascript,functional-programming,browser,Javascript,Functional Programming,Browser,我最近一直在研究使用Javascript进行函数式编程,我是其中的一员 在编写一些“map”、“reduce”和“find”函数时,我发现从JS版本1.5开始,这些函数已经可用(请参阅) 然而,我感到困惑,因为在这些函数(即reduce)旁边,它说“需要javscript 1.8”-但它在1.5文档中?这怎么可能 还有没有人有一个列表,列出了所有主要的浏览器,它们运行的是哪个版本的javascript 如果我想在我的web项目中使用函数式编程,我应该使用哪种方法?我应该包括函数库还是可以依赖浏览

我最近一直在研究使用Javascript进行函数式编程,我是其中的一员

在编写一些“map”、“reduce”和“find”函数时,我发现从JS版本1.5开始,这些函数已经可用(请参阅)

然而,我感到困惑,因为在这些函数(即reduce)旁边,它说“需要javscript 1.8”-但它在1.5文档中?这怎么可能

还有没有人有一个列表,列出了所有主要的浏览器,它们运行的是哪个版本的javascript


如果我想在我的web项目中使用函数式编程,我应该使用哪种方法?我应该包括函数库还是可以依赖浏览器实现?

除非您知道您的用户群是100%firefox 3,否则您将无法依赖这些方法的内置实现

但是,您可以将实现编码为它们可能已经存在

if(!Array.prototype.map)
{
Array.prototype.map=函数(fun/*,thisp*/)
{
var len=this.length>>>0;
如果(乐趣的类型!=“功能”)
抛出新的TypeError();
var res=新阵列(len);
var thisp=参数[1];
对于(变量i=0;i
除非您知道自己的用户群是100%firefox 3,否则您将无法依赖这些方法的内置实现

但是,您可以将实现编码为它们可能已经存在

if(!Array.prototype.map)
{
Array.prototype.map=函数(fun/*,thisp*/)
{
var len=this.length>>>0;
如果(乐趣的类型!=“功能”)
抛出新的TypeError();
var res=新阵列(len);
var thisp=参数[1];
对于(变量i=0;i

我认为最大的问题是这些变化是非官方的,而ecmascript标准(javascript的基础)多年来一直陷于讨论之中

好消息是ECMAScript 5终于走上了一条好路,他们可能会在年底前制定出最终规范,所有浏览器供应商都可能承诺在2010年实现它。因此,到2010年底,我们应该得到数组对象的map/reduce

您可以在此处阅读规范草案:

(3兆PDF文件)

我认为最大的问题是这些变化是非官方的,而ecmascript标准(javascript的基础)多年来一直陷于讨论之中

好消息是ECMAScript 5终于走上了一条好路,他们可能会在年底前制定出最终规范,所有浏览器供应商都可能承诺在2010年实现它。因此,到2010年底,我们应该得到数组对象的map/reduce

您可以在此处阅读规范草案:


(3 meg PDF文件)

何时将其作为标准发布(我指的是所有浏览器)?@drow:当其他浏览器供应商决定实施它时。何时将其作为标准发布(我指的是所有浏览器)?@drow:当其他浏览器供应商决定实施它时。
if (!Array.prototype.map)
{
  Array.prototype.map = function(fun /*, thisp*/)
  {
    var len = this.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in this)
        res[i] = fun.call(thisp, this[i], i, this);
    }

    return res;
  };
}