官术网_书友最值得收藏!

Functions as objects

The concept of first-class objects means that functions can be created, assigned, changed, passed as parameters, or returned as result of yet other functions, in the very same way that you can do with, say, numbers or strings. Let's start with their definition. When you define a function in the usual way:

function xyzzy(...) { ... }

This is (almost) equivalent to writing:

var xyzzy = function(...) { ... }

Except for hoisting. JS moves all definitions to the top of the current scope, but not assignments; so, with the first definition you can invoke xyzzy(...) from any place in your code, but with the second you cannot invoke the function until the assignment has been executed.

See the parallel with the Colossal Cave Adventure Game? Invoking xyzzy(...) anywhere won't always work! And, if you never played that famous interactive fiction game, try it online -- for example, at http://www.web-adventures.org/cgi-bin/webfrotz?s=Adventure or http://www.amc.com/shows/halt-and-catch-fire/colossal-cave-adventure/landing.

The point we want to make, is that a function can be assigned to a variable -- and can also be reassigned, if desired. In a similar vein, we can define functions on the spot, when they are needed. We can even do this without naming them: as with common expressions, if used only once, then you don't need to name it or store it in a variable.

主站蜘蛛池模板: 锡林浩特市| 岗巴县| 秭归县| 灵武市| 绥宁县| 泽州县| 格尔木市| 阿拉善右旗| 南江县| 鸡东县| 合肥市| 邵阳市| 荔波县| 疏勒县| 调兵山市| 广丰县| 太康县| 团风县| 丰顺县| 桃园县| 读书| 克拉玛依市| 东台市| 甘南县| 三门县| 张家口市| 桐城市| 磐安县| 宿迁市| 兴隆县| 临潭县| 宜州市| 政和县| 宁河县| 盐源县| 东海县| 那坡县| 阿拉尔市| 东明县| 苗栗市| 太保市|