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