JavaScript世界的一等公民 - 函数?http://software.intel.com/zh-cn/articles/javascript-first-class-cit
JavaScript世界的一等公民 - 函数
?
http://software.intel.com/zh-cn/articles/javascript-first-class-citizen-function?page=2
?
JavaScript世界的一等公民 - 函数
?
http://software.intel.com/zh-cn/articles/javascript-first-class-citizen-function?page=2
?
// 直接声明函数myfuncfunction myfunc(/* arguments */) {}// 把匿名函数赋值给本地变量myfuncvar myfunc = function(/* arguments */) {}?注意,上面两种函数声明方式存在细微的差别:第一种方式在声明时就是一个命名的函数,无论是声明在调用之前、调用之后,甚至是不会执行到的位置(例如return语句之后或是永远不会为真的分支里),都在整个作用域可访问;第二种方式是通过把匿名函数赋值给变量的方式,严格意义上说这不是一个函数的声明(function declaration)而是一个函数表达式(function expression),在赋值之前这个函数不能被任何代码访问到,也就是说这个赋值必须在调用之前完成,否则调用时会出现错误:"TypeError: undefined is not a function"。例如:myfunc1(); // 能够正常调用,因为myfunc1采用直接声明的方式function myfunc1() {}myfunc2(); // 出错 TypeError: undefined is not a functionvar myfunc2 = function() {};?