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

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.

主站蜘蛛池模板: 怀仁县| 即墨市| 双城市| 盐山县| 同心县| 呈贡县| 广丰县| 友谊县| 昭苏县| 永顺县| 静安区| 晋州市| 马关县| 武陟县| 中西区| 滕州市| 乃东县| 贵德县| 井冈山市| 师宗县| 顺平县| 阆中市| 新绛县| 泰和县| 黔江区| 曲松县| 治多县| 尼勒克县| 金沙县| 葵青区| 永昌县| 香河县| 洪雅县| 美姑县| 连山| 河曲县| 财经| 曲沃县| 东乌珠穆沁旗| 沅陵县| 安福县|