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

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.

主站蜘蛛池模板: 京山县| 密云县| 沁阳市| 星座| 班戈县| 昌平区| 剑川县| 平乐县| 平泉县| 佛学| 萨嘎县| 镇赉县| 文昌市| 绥化市| 灵宝市| 礼泉县| 青铜峡市| 炎陵县| 阳西县| 合川市| 永昌县| 满城县| 宕昌县| 天津市| 宁都县| 蒙城县| 铁岭县| 尚志市| 海原县| 樟树市| 溧水县| 游戏| 榆树市| 尼木县| 高唐县| 嘉黎县| 襄汾县| 鄂托克前旗| 西藏| 濉溪县| 云和县|