Javascript函数作为参数-浏览器兼容性

Javascript函数作为参数-浏览器兼容性,javascript,function,parameters,cross-browser,Javascript,Function,Parameters,Cross Browser,我知道,将函数名作为参数传递的功能几乎由所有现代浏览器处理,但我想知道旧浏览器的兼容性: 支持它的JavaScript/ECMAScript的第一个版本是什么?从JavaScript诞生的最初几天起,它就得到了支持吗?(这会让我大吃一惊) 最初支持它的主要浏览器(谷歌浏览器、火狐、IE、Safari、Opera等)的版本是什么 据我所知,函数始终是对象,对象始终可以作为参数传递。自从Internet Explorer 6之前,所有支持JavaScript的浏览器都可以使用匿名函数作为表达式和传递

我知道,将函数名作为参数传递的功能几乎由所有现代浏览器处理,但我想知道旧浏览器的兼容性:

  • 支持它的JavaScript/ECMAScript的第一个版本是什么?从JavaScript诞生的最初几天起,它就得到了支持吗?(这会让我大吃一惊)
  • 最初支持它的主要浏览器(谷歌浏览器、火狐、IE、Safari、Opera等)的版本是什么

  • 据我所知,函数始终是对象,对象始终可以作为参数传递。

    自从Internet Explorer 6之前,所有支持JavaScript的浏览器都可以使用匿名函数作为表达式和传递声明函数的名称

    我能在上面找到的第一个文档是,它可以追溯到1997年

    如果您谈论的是完全支持,那么IE()的旧版本在命名的函数表达式中出现了变量泄漏,函数表达式的名称在父范围中定义和设置,就好像它实际上是一个声明的函数一样

    支持它的JavaScript/ECMAScript的第一个版本是什么?从JavaScript诞生的最初几天起,它就得到了支持吗?(这会让我大吃一惊)

    一,

    这是语言的一个核心特征

    最初支持它的主要浏览器(谷歌浏览器、火狐、IE、Safari、Opera等)的版本是什么


    最早支持JS的浏览器都支持它。

    AFAIK您可以使用匿名函数作为表达式,并传递与IE6之前的变量相同的命名函数,所以这从来都不是问题。
    addEventListener
    attachEvent
    都将函数作为参数,因此只要它们是javascript的事件处理,它就一直受到支持,而javascript可能是javascript的最早起源,因为没有事件处理,您无法使用javascript。一直以来都是这样支持,这一点我一点也不惊讶,因为它是JavaScript的定义特性之一。您可以在此处阅读第一个规范:
    // Assuming old JScript engine
    typeof foo; // "undefined", expected, it's not been defined yet
    bar; // defined as if hoisted function declaration, unexpected
    
    var foo = function bar() {};
    foo; // as expected
    bar; // identical to foo, not expected
    
    foo === bar; // false, they're actually different function objects in memory