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

时间:2013-06-29 15:49:14

标签: javascript function parameters cross-browser

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

  1. 支持它的第一个版本的JavaScript / ECMAScript是什么?自JavaScript开始以来它是否受到支持? (那会让我感到惊讶)
  2. 首先支持它的每个主要浏览器(谷歌浏览器,Firefox,IE,Safari,Opera等)的版本是什么?

3 个答案:

答案 0 :(得分:0)

据我所知,函数一直是对象,对象总是可以作为参数传递。

答案 1 :(得分:0)

使用匿名函数作为表达式以及传递声明函数的名称已在所有 JavaScript << / em>支持自Internet Explorer 6之前的浏览器。

我能找到的第一份文件是 ECMA-262 ,可追溯到1997年。

如果您正在谈论完全支持,旧版本的IE(even up to IE8)遭受 命名函数表达式中的可变泄漏,其中函数表达式 name 在父作用域中定义并设置,就好像它实际上是声明的函数

// 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

答案 2 :(得分:0)

  

支持它的第一个版本的JavaScript / ECMAScript是什么?自JavaScript开始以来它是否受到支持? (这会让我感到惊讶)

1

这是一项核心语言功能。

  

首先支持它的每个主要浏览器(谷歌浏览器,Firefox,IE,Safari,Opera等)的版本是什么?

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