Function
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
* Some parts of this feature may have varying levels of support.
Ðа Ñамом деле ÐºÐ°Ð¶Ð´Ð°Ñ JavaScript-ÑÑнкÑÐ¸Ñ ÑвлÑеÑÑÑ Ð¾Ð±ÑекÑом Function. ÐÑо легко пÑовеÑиÑÑ, вÑполнив пÑовеÑÐºÑ (function(){}).constructor === Function, коÑоÑÐ°Ñ Ð²ÐµÑнÑÑ true.
ÐонÑÑÑÑкÑоÑ
Function()-
СоздаÑÑ Ð½Ð¾Ð²Ñй обÑекÑ
Function. ÐÑзов конÑÑÑÑкÑоÑа напÑÑмÑÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑоздаваÑÑ ÑÑнкÑии пÑогÑаммнÑм пÑÑÑм. Такой ÑпоÑоб пÑедÑÑавлÑÐµÑ ÑгÑÐ¾Ð·Ñ Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, а Ñакже неÑÑÑ ÑазнÑе (Ñ Ð¾ÑÑ Ð½Ðµ Ñакие знаÑиÑелÑнÑе) пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð¿ÑоизводиÑелÑноÑÑÑÑ Ð¿Ñи иÑполÑзовании ÑGlobal_Objects/eval. Ðднако в оÑлиÑие Ð¾Ñ eval, конÑÑÑÑкÑоÑFunctionÑоздаÑÑ ÑÑнкÑии, вÑполнÑемÑе ÑолÑко в глобалÑной облаÑÑи видимоÑÑи.
СвойÑÑва ÑкземплÑÑа
Function.prototype.arguments-
ÐаÑÑив Ñ Ð¿ÐµÑеданнÑми ÑÑнкÑии аÑгÑменÑами. ÐÑо ÑÑÑаÑевÑее ÑвойÑÑво обÑекÑа
Function. ÐмеÑÑо него иÑполÑзÑйÑе обÑекÑarguments(доÑÑÑпнÑй внÑÑÑи ÑÑнкÑии). Function.prototype.caller-
СодеÑÐ¶Ð¸Ñ ÑÑнкÑиÑ, коÑоÑÐ°Ñ Ð²Ñзвала ÑекÑÑÑÑ Ð²ÑполнÑÑÑÑÑÑÑ ÑÑнкÑиÑ. ÐÑо ÑÑÑаÑевÑее ÑвойÑÑво, коÑоÑое ÑабоÑÐ°ÐµÑ ÑолÑко в ÑÑнкÑиÑÑ Ð±ÐµÐ· вклÑÑÑнного ÑÑÑогого Ñежима.
Function.prototype.displayName-
ÐÑобÑажаемое Ð¸Ð¼Ñ ÑÑнкÑии.
Function.prototype.length-
СодеÑÐ¶Ð¸Ñ ÐºÐ¾Ð»Ð¸ÑеÑÑво аÑгÑменÑов в ÑÑнкÑии.
Function.prototype.name-
ÐÐ¼Ñ ÑÑнкÑии.
ÐеÑÐ¾Ð´Ñ ÑкземплÑÑа
Function.prototype.apply(thisArg [, argsArray])-
ÐÑзÑÐ²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ Ð¸ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐµÑ
thisна пеÑеданнÑйthisArg. ÐÑгÑменÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÐµÑÐµÐ´Ð°Ð½Ñ Ð² виде обÑекÑаArray. Function.prototype.bind(thisArg[, arg1[, arg2[, ...argN]]])-
Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð½Ð¾Ð²ÑÑ ÑÑнкÑиÑ, пÑи вÑзове коÑоÑой еÑ
thisбÑÐ´ÐµÑ ÑÑÑановлен наthisArg. Ðожно Ñакже ÑказаÑÑ ÑÑд аÑгÑменÑов, коÑоÑÑе бÑдÑÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ðº аÑгÑменÑам пÑи вÑзове новой пÑивÑзанной ÑÑнкÑии. Function.prototype.call(thisArg[, arg1, arg2, ...argN])-
ÐÑзÑÐ²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ Ð¸ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÐµÑ
thisна пеÑеданное знаÑение. ÐÑгÑменÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿ÐµÑÐµÐ´Ð°Ð½Ñ ÐºÐ°Ðº еÑÑÑ. Function.prototype.toString()-
ÐозвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ñм кодом ÑÑнкÑии. ÐеÑеопÑеделÑÐµÑ Ð¼ÐµÑод
Object.prototype.toString.
ÐÑимеÑÑ
>СÑавнение конÑÑÑÑкÑоÑа Function и обÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑÑнкÑии
ФÑнкÑии, ÑозданнÑе ÑеÑез конÑÑÑÑкÑÐ¾Ñ Function, не имеÑÑ Ð´Ð¾ÑÑÑпа к ÑобÑÑÐ²ÐµÐ½Ð½Ð¾Ð¼Ñ ÐºÐ¾Ð½ÑекÑÑÑ Ð¸ÑполнениÑ, Ñ.е. они вÑегда ÑоздаÑÑÑÑ Ð² глобалÑной облаÑÑи видимоÑÑи. ÐÑи вÑполнении ÑакиÑ
ÑÑнкÑий, они ÑмогÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ ÑолÑко к Ñвоим локалÑнÑм и глобалÑнÑм пеÑеменнÑм, но не к пеÑеменнÑм в Ñой облаÑÑи видимоÑÑи, в коÑоÑой вÑзÑвалÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¾Ñ Function. Ð ÑÑом они оÑлиÑаÑÑÑÑ Ð¾Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Global_Objects/eval Ñ ÑÑнкÑиÑми-вÑÑажениÑми.
var x = 10;
function createFunction1() {
var x = 20;
return new Function("return x;"); // здеÑÑ |x| ÑÑÑлаеÑÑÑ Ð½Ð° глобалÑнÑй |x|
}
function createFunction2() {
var x = 20;
function f() {
return x; // здеÑÑ |x| ÑÑÑлаеÑÑÑ Ð½Ð° локалÑнÑй |x| вÑÑе
}
return f;
}
var f1 = createFunction1();
console.log(f1()); // 10
var f2 = createFunction2();
console.log(f2()); // 20
ХоÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ ÑабоÑÐ°ÐµÑ Ð² бÑаÑзеÑаÑ
, в окÑÑжении Node.js вÑзов f1() пÑиведÑÑ Ðº оÑибке ReferenceError, поÑÐ¾Ð¼Ñ ÑÑо x не бÑÐ´ÐµÑ Ð½Ð°Ð¹Ð´ÐµÐ½. ÐÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¸Ð·-за Ñого, ÑÑо облаÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи веÑÑ
него ÑÑÐ¾Ð²Ð½Ñ Ð² Node не ÑвлÑеÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»Ñной облаÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи, поÑÑÐ¾Ð¼Ñ x ÑÑÑлаеÑÑÑ Ð½Ð° локалÑнÑÑ Ð¿ÐµÑеменнÑÑ Ð² пÑеделаÑ
ÑекÑÑего модÑлÑ.
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-function-objects> |
СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами
СмоÑÑиÑе Ñакже
- ФÑнкÑии и Ð¸Ñ Ð¾Ð±Ð»Ð°ÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑи
- ÐнÑÑÑÑкÑиÑ
function - ÐÑÑажение
function - ÐнÑÑÑÑкÑиÑ
function* - ÐÑÑажение
function* AsyncFunctionGeneratorFunction