Függvény

Ez a fordítás hiányos. Segítsen a cikk angolról történő lefordításában

A Function konstruktora létrehoz egy új Function objektumot. A konstruktort közvetlenül meghívva dinamikusan hozhat létre függvényeket, de ez biztonsági és teljesítménybeli problémákat okozhat hasonlóan a eval híváshoz. Viszont az eval függvénnyel ellentétben a Function konstruktor csak olyan függvényeket hoz létre, amely a globális hatókörben hajtódik végre.

Minden JavaScript függvény tulajdonképpen egy Function objektum. Ez látható a következő kódnál, amely igazat ad vissza: (function(){}).constructor === Function.

Szintaxisa

new Function ([arg1[, arg2[, ...argN]],] függvényTörzs)

Paraméterei

arg1, arg2, ... argN
A függvény által használt formális argumentumok elnevezéseai. Mindegyik kötelezően egy-egy karakterlánc, amely érvényes JavaScript azonosítónak felel meg, vagy ilyen típusú karakterláncok listája vesszővel elválasztva. Például „x”, „theValue”, vagy „a,b”.
függvényTörzs
Azokat a JavaScript utasításokat tartalmazó karakterlánc, amely megadja a függvény definícióját.

Leírás

A Function objektumokat a Function konstruktorral lehet létrehozni, és a függvény meghívásakor kerülnek feldolgozásra. Ez kevésbé hatékony, mint egy függvénykifejezés vagy egy függvény utasítás és annak meghívása a kódban, mert az ilyen függvények a kód többi részével együtt kerülnek feldolgozásra.

Az összes a függvénynek átadott argumentum azonosítónévként lesz kezelve a létrehozandó függvényben, a megadásuk sorrendjében.

A Function konstruktor függvényként történő (new operátor nélkül) meghívása ugyanazt eredményezi, mintha konstruktorként hívta volna meg.

A Function tulajdonságai és metódusai

A globális Function objektumnak sem metódusai, sem tulajdonságai sincsenek. Viszont, mivel maga is egy függvény, ezért örököl néhány metódust és tulajdonságot a Function.prototype prototípusláncából.

Function prototípus objektum

Tulajdonságok

Metódusok

Function példányok

A Function példányok öröklik a Function.prototype metódusait és tulajdonságait. Ahogy az összes konstruktornál, módosíthatja a konstruktor prototípus objektumát, hogy módosításokat végezzen az összes Function példányon.

Példák

Argumentumok megadása a Function konstruktorral

A következő létrehoz egy Function objektumot, amely két argumentumot fogad.

// A példa közvetlenül futtatható a JavaScript konzolban

// Új függvény létrehozása, amely két argumentumot fogad és visszaadja azok összegét
var adder = new Function('a', 'b', 'return a + b');

// A függvény meghívása
adder(2, 6);
// > 8

Az „a” és „b”  formális argumentumnevek, amelyek a függvénytörzsben használatosak: „return a + b”.

Különbség a Function konstruktor és a függvénydeklaráció között

A Function konstruktorral létrehozott függvények nem hoznak létre zárványt a létrehozási környezetükhöz, mindig a globális hatókörbe kerülnek. Ha futtatja őket, akkor csak a saját helyi változóit és a globálisakat fogják elérni, a Function konstruktor meghívásakor aktív hatókörben szereplőket nem. Ez különbözik attól, mintha az eval függvényt használná egy függvénykifejezéshez.

var x = 10;

function createFunction1() {
    var x = 20;
    return new Function('return x;'); // az |x| a globális |x|-et jelenti
}

function createFunction2() {
    var x = 20;
    function f() {
        return x; // ez az |x| a fent lévő helyi |x|-et jelenti
    }
    return f;
}

var f1 = createFunction1();
console.log(f1());          // 10
var f2 = createFunction2();
console.log(f2());          // 20

A kód működik a webböngészőkben, de az f1() ReferenceError hibát okoz Node.js-ben, mert az x nem található. Ez azért van, mert a Node felsző szintű hatóköre nincs a globális hatókörben, és az x a modulra nézve helyi változó lesz.

Specifikációk

Specification Status Comment
ECMAScript 1st Edition (ECMA-262) Standard Kezdeti definíció. A JavaScript 1.0-ban megvalósítva.
ECMAScript 5.1 (ECMA-262)
The definition of 'Function' in that specification.
Standard
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Function' in that specification.
Standard
ECMAScript (ECMA-262)
The definition of 'Function' in that specification.
Living Standard

Böngésző kompatibilitás

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
FunctionChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
Function() constructorChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
applyChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5.5Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
arguments
DeprecatedNon-standard
Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
bindChrome Full support 7Edge Full support 12Firefox Full support 4IE Full support 9Opera Full support 11.6Safari Full support 5.1WebView Android Full support 4Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 12Safari iOS Full support 6Samsung Internet Android Full support 1.0nodejs Full support Yes
callChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5.5Opera Full support 4Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
caller
Non-standard
Chrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 8Opera Full support 9.6Safari Full support 3WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
displayName
Non-standard
Chrome No support NoEdge No support NoFirefox Full support 13IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 14Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No
lengthChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 4Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes
nameChrome Full support 15Edge Full support 14Firefox Full support 1IE No support NoOpera Full support 10.5Safari Full support 6WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 11Safari iOS Full support 6Samsung Internet Android Full support 1.0nodejs Full support Yes
toSource
Non-standard
Chrome No support NoEdge No support NoFirefox No support 1 — 74
Notes
No support 1 — 74
Notes
Notes Starting in Firefox 74, toSource() is no longer available for use by web content. It is still allowed for internal and privileged code.
IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 4Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support Nonodejs No support No
toStringChrome Full support 1Edge Full support 12Firefox Full support 1IE Full support 5Opera Full support 3Safari Full support 1WebView Android Full support 1Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 10.1Safari iOS Full support 1Samsung Internet Android Full support 1.0nodejs Full support Yes

Legend

Full support  
Full support
No support  
No support
Non-standard. Expect poor cross-browser support.
Non-standard. Expect poor cross-browser support.
Deprecated. Not for use in new websites.
Deprecated. Not for use in new websites.
See implementation notes.
See implementation notes.

Lásd még: