जावास्क्रिप्ट फ़ंक्शन डिफ़ाइनिशन

JavaScript 函数是通过 function 关键词定义的。

您可以使用函数घोषणा或函数表达式

函数声明

在本教程中稍早之前,您学到了通过如下语法घोषणा函数:

function functionName(parameters) {
   要执行的代码
}

被声明的函数不会直接执行。它们被“保存供稍后使用”,将在稍后执行,当它们被调用时。

इनस्टांस

function myFunction(a, b) {
     return a * b;
}

स्वयं को प्रयास करें

分号用于分隔可执行的 JavaScript 语句。

由于函数घोषणा不是可执行的语句,以分号结尾并不常见。

函数表达式

JavaScript 函数也可以使用表达式来定义。

函数表达式可以在变量中存储:

इनस्टांस

var x = function (a, b) {return a * b};

स्वयं को प्रयास करें

在变量中保存函数表达式之后,此变量可用作函数:

इनस्टांस

var x = function (a, b) {return a * b};
var x = function (a, b) {return a * b};

स्वयं को प्रयास करें

ऊपरी फ़ंक्शन वास्तव में एकvar z = x(4, 3);(गैर-नामक फ़ंक्शन)。

अनाम फ़ंक्शन

जिसे वारियबल में रखा गया फ़ंक्शन को फ़ंक्शन नाम की जरूरत नहीं होती है। वे हमेशा वारियबल नाम के द्वारा बुलाया जाता है।

उपरी फ़ंक्शन सेमीकोलन द्वारा समाप्त है क्योंकि यह एक अभिनय स्टेटमेंट का हिस्सा है.

जैसा कि आपने पहले के उदाहरण में देखा है, JavaScript फ़ंक्शन Function() कंस्ट्रक्टर के द्वारा डिफाइन की जाती है. function क्लीवर्ड डिफाइनिंग करके डिफाइन की जा सकती है.

函数也可以通过名为 Function() एक निर्मित जेवेस्क्रिप्ट फ़ंक्शन कास्ट्रक्टर के द्वारा परिभाषित किया जाता है。

इनस्टांस

var myFunction = new Function("a", "b", "return a * b");
var x = myFunction(4, 3);

स्वयं को प्रयास करें

आपको फ़ंक्शन कास्ट्रक्टर का उपयोग करने की आवश्यकता नहीं है। उपरोक्त उदाहरण इसी तरह ही लिखा जा सकता है:

इनस्टांस

var myFunction = function (a, b) {return a * b};
var x = myFunction(4, 3);

स्वयं को प्रयास करें

अधिकांश स्थितियों में, आप जेवेस्क्रिप्ट में 'new' का उपयोग करने से बच सकते हैं new शब्द

फ़ंक्शन उठाना

इस पाठक के आरंभ में, आपको 'Hoisting' को सीखा होगा。

Hoisting जेवेस्क्रिप्ट जोघोषणावर्तमान क्षेत्र के शीर्ष पर ले जाने की मूलभूत व्यवहार

Hoisting वारियबल घोषणा और फ़ंक्शन घोषणा पर लागू होता है。

इसलिए, जेवेस्क्रिप्ट फ़ंक्शन घोषणा से पहले भी बुलाया जा सकता है:

myFunction(5);
 function myFunction(y) {
     return y * y;
}

अभिव्यक्ति से परिभाषित फ़ंक्शन उठाने के लिए नहीं उठाया जाता है。

स्वत: आवेदन फ़ंक्शन

फ़ंक्शन अभिव्यक्ति एक 'स्वत: आवेदन' के रूप में कार्य कर सकती है。

स्वत: आवेदन वाली अभिव्यक्ति स्वत: बुलाई जाती है (शुरू होती है), बिना किसी बुलावे के।

फ़ंक्शन अभिव्यक्ति स्वत: चलाई जाती है, अगर अभिव्यक्ति के बाद ()

आप फ़ंक्शन घोषणा को आत्म-आवेदन नहीं कर सकते।

आपको फ़ंक्शन को संकेत करने के लिए फ़ंक्शन चिह्नों के चारों ओर बांधना होगा:

इनस्टांस

(function () {
    var x = "Hello!!";      // मैं खुद को बुलाऊंगा
}();

स्वयं को प्रयास करें

ऊपरी फ़ंक्शन वास्तव में एकअज्ञात आत्म-आवेदन फ़ंक्शन(गैर-नामक फ़ंक्शन)。

फ़ंक्शन मूल्य के रूप में उपयोग किया जा सकता है

जेवेस्क्रिप्ट फ़ंक्शन एक मूल्य के रूप में उपयोग किया जा सकता है:

इनस्टांस

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3);

स्वयं को प्रयास करें

जेवेस्क्रिप्ट फ़ंक्शन एक अभिव्यक्ति में उपयोग किया जा सकता है:

इनस्टांस

function myFunction(a, b) {
    return a * b;
}
var x = myFunction(4, 3) * 2;

स्वयं को प्रयास करें

फ़ंक्शन ऑब्जैक्ट है

जेवेस्क्रिप्ट में typeof ऑपरेटर फ़ंक्शन को "function"。

लेकिन जेवेस्क्रिप्ट फ़ंक्शन को बेहतर है कि आप इसे ऑब्जैक्ट के रूप में वर्णित करें。

जेवेस्क्रिप्ट फ़ंक्शन सभी के पास होते हैंगुणऔरमथड़ी

arguments.length फ़ंक्शन जब बुलाया जाता है तो प्राप्त होने वाले पारामीटर की संख्या वापस करता है:

इनस्टांस

function myFunction(a, b) {
    return arguments.length;
}

स्वयं को प्रयास करें

toString() मूल्य वाक्यांश वापरकर फ़ंक्शन वापस करता है:

इनस्टांस

function myFunction(a, b) {
    return a * b;
}
var txt = myFunction.toString();

स्वयं को प्रयास करें

ऑब्जेक्ट गुण के रूप में परिभाषित फ़ंक्शनों को ऑब्जेक्ट विधि कहा जाता है。

नए ऑब्जेक्ट के निर्माण के लिए डिज़ाइन किए गए फ़ंक्शनों को ऑब्जेक्ट कान्स्ट्रक्टर (ऑब्जेक्ट कान्स्ट्रक्टर) कहा जाता है。

आर्टचर्ज फ़ंक्शन

आर्टचर्ज फ़ंक्शन फ़ंक्शन एक्सप्रेशन को लिखने के लिए संक्षिप्त गणना अनुमति देते हैं。

आपको function की अभिव्यक्ति, return की अभिव्यक्ति और ब्रैकेट्स की आवश्यकता नहीं है।

इनस्टांस

// ES5
var x = function(x, y) {
  return x * y;
}
// ES6
const x = (x, y) => x * y;

स्वयं को प्रयास करें

आर्टचर्ज फ़ंक्शन अपना this नहीं है।वे ऑब्जेक्ट विधि के लिए उपयोगी नहीं हैं。

आर्टचर्ज फ़ंक्शन नहीं उठाया जाता है।वे प्रयोग किए जाने से पहले परिभाषित किए जाने चाहिए。

const का उपयोग करना var की तुलना में अधिक सुरक्षित है क्योंकि फ़ंक्शन एक्सप्रेशन हमेशा निर्दिष्ट मान है।

यदि फ़ंक्शन एकल वाक्य है, तो केवल return की अभिव्यक्ति और ब्रैकेट्स को छोड़ दिया जाता है।इसलिए उन्हें बरकरार रखना एक अच्छा आदत हो सकती है:

इनस्टांस

const x = (x, y) => { return x * y };

स्वयं को प्रयास करें

आइई11 या उससे पहले की संस्करण आर्टचर्ज फ़ंक्शन का समर्थन नहीं करती है。