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

相關文章
相關標籤/搜索