การอ้างอิง: การใช้งานจริงของการปิด
ในการฝึกปฏิบัติงานอาจสร้างการออกแบบที่หรูหราช่วยให้สามารถปรับแต่งการคำนวณที่หลากหลายการโทรรอการตัดบัญชีการโทรกลับการสร้างขอบเขตที่ห่อหุ้ม ฯลฯ
ตัวอย่างวิธีการเรียงลำดับของอาร์เรย์ที่ยอมรับว่าเป็นอาร์กิวเมนต์ของฟังก์ชันการเรียงลำดับ:
[1, 2, 3].sort(function (a, b) {
... // sort conditions
});
การทำแผนที่ฟังก์ชั่นเป็นวิธีการแผนที่ของอาร์เรย์ซึ่งแผนที่อาร์เรย์ใหม่โดยเงื่อนไขของการโต้แย้งการทำงาน:
[1, 2, 3].map(function (element) {
return element * 2;
}); // [2, 4, 6]
บ่อยครั้งที่สะดวกในการใช้ฟังก์ชั่นการค้นหาด้วยการใช้อาร์กิวเมนต์การทำงานที่กำหนดเงื่อนไขเกือบไม่ จำกัด สำหรับการค้นหา:
someCollection.find(function (element) {
return element.someProperty == 'searchCondition';
});
นอกจากนี้เราอาจสังเกตการใช้ functionals เป็นตัวอย่างเช่นวิธี forEach ซึ่งใช้ฟังก์ชันกับอาร์เรย์ขององค์ประกอบ:
[1, 2, 3].forEach(function (element) {
if (element % 2 != 0) {
alert(element);
}
}); // 1, 3
ฟังก์ชั่นจะนำไปใช้กับข้อโต้แย้ง (กับรายการของข้อโต้แย้ง - นำไปใช้และข้อโต้แย้งในตำแหน่ง - ในการโทร):
(function () {
alert([].join.call(arguments, ';')); // 1;2;3
}).apply(this, [1, 2, 3]);
สายรอสาย:
var a = 10;
setTimeout(function () {
alert(a); // 10, after one second
}, 1000);
ฟังก์ชั่นการโทรกลับ:
var x = 10;
// only for example
xmlHttpRequestObject.onreadystatechange = function () {
// callback, which will be called deferral ,
// when data will be ready;
// variable "x" here is available,
// regardless that context in which,
// it was created already finished
alert(x); // 10
};
การสร้างขอบเขตที่ห่อหุ้มเพื่อวัตถุประสงค์ในการซ่อนวัตถุเสริม:
var foo = {};
(function (object) {
var x = 10;
object.getX = function _getX() {
return x;
};
})(foo);
alert(foo.getX());// get closured "x" – 10