JS函数定义特性摘录

ECMA语法定义

FunctionDeclaration :
function Identifier ( FormalParameterList opt ){ FunctionBody }

FunctionExpression :
function Identifier opt ( FormalParameterList opt ){ FunctionBody }

一些有趣的特性

  • 函数声明老是先于其它表达式解析。下面这个能够正确弹出alert框:
alert(fn());

function fn() {
  return 'Hello world!';
}
  • 后定义的函数声明会覆盖先定义的函数表达式(但不彻底可靠)
var foo = function(){ return 1; };
if (true) {
  function foo(){ return 2; }
}
foo();
  • 函数表达式的标识只在该函数内部可见
var f = function foo(){
  return typeof foo; // "foo" 只在内部可见
};
// `foo` 在外部不可见
typeof foo; // "undefined"
f(); // "function"
  • 在IE8及如下,这就是个雷区,详见参考连接的JScript bugs部分。

参考连接:http://kangax.github.io/nfe/git

相关文章
相关标签/搜索