Baseline Widely available
ÐлÑÑевое Ñлово function
Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑнкÑии внÑÑÑи вÑÑажениÑ.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе Ñакже опÑеделÑÑÑ ÑÑнкÑии иÑполÑзÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¾Ñ Function
и обÑÑвление ÑÑнкÑии
.
var myFunction = function [name]([param1[, param2[, ..., paramN]]]) { statements };
С веÑÑии ES2015 можно Ñакже иÑполÑзоваÑÑ ÑÑÑелоÑнÑе ÑÑнкÑии.
ÐаÑамеÑÑÑname
ÐÐ¼Ñ ÑÑнкÑии. ÐÐ¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено, в Ñаком ÑлÑÑае ÑÑнкÑÐ¸Ñ ÑвлÑеÑÑÑ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð¹. ÐÐ¼Ñ ÑÑнкÑии ÑвлÑеÑÑÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑм Ð´Ð»Ñ ÐµÑ Ñела.
paramN
ÐÐ¼Ñ Ð°ÑгÑменÑа, пеÑедаваемого в ÑÑнкÑиÑ.
statements
ÐнÑÑÑÑкÑии, ÑоÑÑавлÑÑÑие Ñело ÑÑнкÑии.
ФÑнкÑионалÑное вÑÑажение и обÑÑвление ÑÑнкÑии оÑÐµÐ½Ñ Ð¿Ð¾Ñ Ð¾Ð¶Ð¸ и имеÑÑ Ð¿Ð¾ÑÑи одинаковÑй ÑинÑакÑиÑ. ÐлавнÑм оÑлиÑием Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ ÑвлÑеÑÑÑ Ð¸Ð¼Ñ ÑÑнкÑии, коÑоÑое в ÑлÑÑае ÑÑнкÑионалÑнÑÑ Ð²ÑÑажений Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ð¿ÑÑено Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½ÑÑ ÑÑнкÑий. ФÑнкÑионалÑное вÑÑажение Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзовано Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑамовÑзÑваÑÑейÑÑ ÑÑнкÑии IIFE (Immediately Invoked Function Expression), коÑоÑÐ°Ñ Ð¸ÑполнÑеÑÑÑ ÑÑÐ°Ð·Ñ Ð¶Ðµ поÑле Ñого, как она бÑла опÑеделена. Ðолее подÑÐ¾Ð±Ð½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð° в Ñазделе о ÑÑнкÑиÑÑ .
ÐоднÑÑие ÑÑнкÑионалÑнÑÑ Ð²ÑÑаженийФÑнкÑионалÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² JavaScript не поднимаÑÑÑÑ (hoisting), в оÑлиÑие Ð¾Ñ Ð¾Ð±ÑÑвленнÑÑ
ÑÑнкÑий
. ÐÑ Ð½Ðµ можеÑе иÑполÑзоваÑÑ ÑÑнкÑионалÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñежде, Ñем Ð²Ñ Ð¸Ñ
опÑеделили.
console.log(notHoisted); // undefined
//ХоÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð½Ð°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¸ поднимаеÑÑÑ, опÑеделение пеÑеменной пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð·Ð¶Ðµ
notHoisted(); // TypeError: notHoisted is not a function
var notHoisted = function () {
console.log("bar");
};
Ðменованное ÑÑнкÑионалÑное вÑÑажение
ÐÑли Ð²Ñ Ñ
оÑиÑе ÑоÑлаÑÑÑÑ Ð½Ð° ÑекÑÑÑÑ ÑÑнкÑÐ¸Ñ Ð²Ð½ÑÑÑи Ñела ÑÑой ÑÑнкÑии, вам необÑ
одимо ÑоздаÑÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ð¾Ðµ ÑÑнкÑионалÑное вÑÑажение. Ðанное Ð¸Ð¼Ñ Ð±ÑÐ´ÐµÑ Ð»Ð¾ÐºÐ°Ð»ÑнÑм ÑолÑко Ð´Ð»Ñ Ñела ÑÑнкÑии (ÐµÑ Ð¾Ð±Ð»Ð°ÑÑи видимоÑÑи). ÐÑоме Ñого, ÑÑо позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½ÐµÑÑандаÑÑного ÑвойÑÑва arguments.callee
.
var math = {
factit: function factorial(n) {
console.log(n);
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
},
};
math.factit(3); //3;2;1;
ÐеÑеменнаÑ, коÑоÑой пÑиÑвоено ÑÑнкÑионалÑное вÑÑажение, бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ ÑвойÑÑво name
, ÑодеÑжаÑее Ð¸Ð¼Ñ ÑÑнкÑии. Ðно не измениÑÑÑ Ð¿Ñи пеÑепÑиÑваивании дÑÑгой пеÑеменной. ÐÐ»Ñ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ð¾Ð¹ ÑÑнкÑии, знаÑением ÑвойÑÑва name
бÑÐ´ÐµÑ Ð¸Ð¼Ñ Ð¿ÐµÑеменной (неÑвное имÑ). ÐÑли же Ð¸Ð¼Ñ Ð·Ð°Ð´Ð°Ð½Ð¾, Ñо бÑÐ´ÐµÑ Ð¸ÑполÑзовано Ð¸Ð¼Ñ ÑÑнкÑии (Ñвное имÑ). ÐÑо же каÑаеÑÑÑ ÑÑÑелоÑнÑÑ
ÑÑнкÑий (в иÑ
ÑлÑÑае Ñам бÑÐ´ÐµÑ Ð·Ð°Ð¿Ð¸Ñано Ð¸Ð¼Ñ Ð¿ÐµÑеменной, Ñ.к. они вÑегда анонимнÑе).
var foo = function () {};
foo.name; // "foo"
var foo2 = foo;
foo2.name; // "foo"
var bar = function baz() {};
bar.name; // "baz"
console.log(foo === foo2); // true
console.log(typeof baz); // undefined
console.log(bar === baz); // false (errors because baz == undefined)
ÐÑимеÑÑ
СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑиÑÑÐµÑ Ñоздание безÑмÑнной (анонимной) ÑÑнкÑии и пÑиÑвоение ÐµÑ Ð¿ÐµÑеменной x
. ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÐºÐ²Ð°Ð´ÑÐ°Ñ Ð¿ÐµÑеданного знаÑениÑ:
var x = function (y) {
return y * y;
};
ÐÑеимÑÑеÑÑвенно анонимнÑе ÑÑнкÑии иÑполÑзÑÑÑÑÑ ÐºÐ°Ðº колбÑк-ÑÑнкÑии.
button.addEventListener("click", function (event) {
console.log("button is clicked!");
});
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4