2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
नियोग
प्रत्येकं फंक्शन् Function प्रकारस्य उदाहरणं भवति, तथा च Function इत्यस्य अपि अन्येषां सन्दर्भप्रकारस्य इव गुणाः, मेथड्स् च सन्ति । फंक्शन्स् ओब्जेक्ट्स् सन्ति, फंक्शन् नाम च फंक्शन् ऑब्जेक्ट् इत्यस्य सूचकं भवति, न तु फंक्शन् इत्यनेन एव दृढतया बद्धं भवति इति अनिवार्यम् ।
फंक्शन परिभाषा का कार्य घोषणात्मक परिभाषा
function sum (n1,n2){ return n1+n2; }कार्यपरिभाषायाः कार्यव्यञ्जनम्
let sum = function(n1,n2){ return n1+n2; };function definition arrow function
let sum = (n1,n2)=>{ return n1+n2; };function definition कन्स्ट्रक्टर्
let sum = new Function("n1","n2","return n1+n2"); /*这个构造函数接收任意多个字符串参数, 最后一个参数始终会被当成函数体, 而之前的参数都是新函数的参数*/
बाण कार्य
यत्र कुत्रापि कार्यव्यञ्जनस्य उपयोगः कर्तुं शक्यते तत्र बाणकार्यस्य उपयोगः कर्तुं शक्यते ।
let sum = (a,b)=>{ return a+b; }; let sum1 = function(a,b){ return a+b; }; //箭头函数适合嵌入函数的场景 let arr = [1,2,3]; console.log(arr.map(function(i) {return i+1;})); console.log(arr.map((i)=>{return i+1;})); //二者结果一样,但是箭头函数更为简洁 //如果只有一个参数,括号可以不用。只有没有参数,或者多个参数的情况下,才使用括号 let double = (x)=>{return 2*x;}; let triple = x => {return 3*x}; //箭头函数也可以不使用大括号,但这样会改变函数的行为。使用大括号就说明包含函数体,可以在一 //个函数中包含多条语句,跟常规函数一样。如果不使用,后面只能有一行代码。 let double = (x)=>{return 2*x;}; let triple = x=>3*x;यद्यपि बाणकार्यस्य सरलवाक्यविन्यासः भवति तथापि बहवः परिस्थितयः सन्ति यत्र ते अयोग्याः सन्ति । बाणकार्याणि आर्गुमेण्ट्, super, new.target इत्येतयोः उपयोगं कर्तुं न शक्नुवन्ति, न च तेषां उपयोगः कन्स्ट्रक्टर् इत्यस्य रूपेण कर्तुं शक्यते । तदतिरिक्तं बाणकार्यस्य आद्यविशेषणं नास्ति ।
बाणकार्येषु पैरामीटर्
फंक्शन् बाणवाक्यविन्यासस्य उपयोगेन परिभाषितं भवति, अतः फंक्शन् प्रति प्रदत्ताः पैरामीटर्स् arguments कीवर्ड इत्यस्य उपयोगेन अभिगन्तुं न शक्यन्ते, परन्तु केवलं परिभाषितनामक पैरामीटर्स् इत्यस्य माध्यमेन एव अभिगन्तुं शक्यन्ते
function foo() { console.log(arguments[0]); } foo(5); // 5 let bar = () => { console.log(arguments[0]); }; bar(5); // ReferenceError: arguments is not defined
कार्यनाम
एकस्य फंक्शन् इत्यस्य बहुनामानि भवितुम् अर्हन्ति ।
function sum(num1, num2) { return num1 + num2; } console.log(sum(10, 10)); // 20 let anotherSum = sum; console.log(anotherSum(10, 10)); // 20 sum = null; console.log(anotherSum(10, 10)); // 20
पूर्वनिर्धारित पैरामीटर मूल्य
फंक्शन् परिभाषायां पैरामीटर् इत्यस्य अनन्तरं = इत्यस्य उपयोगेन भवान् पैरामीटर् इत्यस्य कृते पूर्वनिर्धारितं मूल्यं नियुक्तुं शक्नोति ।
function makeKing(name = 'Henry') { return `King ${name} VIII`; } console.log(makeKing('Louis')); // 'King Louis VIII' console.log(makeKing()); // 'King Henry VIII'पूर्वनिर्धारितपैरामीटर् मूल्यानि आदिममूल्यानि अथवा वस्तुप्रकारेषु सीमिताः न सन्ति, आह्वानकार्यद्वारा प्रत्यागतानि मूल्यानि अपि उपयोक्तुं शक्यन्ते
let romanNumerals = ['I', 'II', 'III', 'IV', 'V', 'VI']; let ordinality = 0; function getNumerals() { // 每次调用后递增 return romanNumerals[ordinality++]; } function makeKing(name = 'Henry', numerals = getNumerals()) { return `King ${name} ${numerals}`; } console.log(makeKing()); // 'King Henry I' console.log(makeKing('Louis', 'XVI')); // 'King Louis XVI' console.log(makeKing()); // 'King Henry II' console.log(makeKing()); // 'King Henry III'
पैरामीटर विस्तार एवं संग्रह
ES6 एकं नूतनं विस्तारसञ्चालकं योजयति, यस्य उपयोगेन संग्रहदत्तांशस्य संचालनाय, संयोजनाय च अतीव संक्षिप्तरूपेण कर्तुं शक्यते । स्प्रेड् ऑपरेटर् कृते सर्वाधिकं उपयोगी परिदृश्यं फंक्शन् परिभाषायां पैरामीटर् सूची अस्ति, यत्र भाषायाः दुर्बल टङ्कनस्य तथा च चरदीर्घता पैरामीटर् इत्यस्य पूर्णं लाभं ग्रहीतुं शक्नोति स्प्रेड् ऑपरेटर् इत्यस्य उपयोगः फंक्शन् आह्वयति समये पैरामीटर्स् पारयितुं, अथवा फंक्शन् पैरामीटर्स् परिभाषितुं कर्तुं शक्यते ।
विस्तारिताः मापदण्डाः
let values = [1, 2, 3, 4]; function getSum() { let sum = 0; for (let i = 0; i < arguments.length; ++i) { sum += arguments[i]; } return sum; } //不使用扩展操作符实现累加 console.log(getSum.apply(null,values)); //使用扩展操作符 console.log(getSum(...values));पैरामीटर् संग्रहयन्तु
यदि संगृहीतमापदण्डानां पुरतः नामकृताः मापदण्डाः सन्ति तर्हि केवलं शेषमापदण्डाः एव संगृहीताः भविष्यन्ति यदि न तर्हि रिक्तं सरणीं प्राप्स्यति; यतः पैरामीटर्-सङ्ग्रहस्य परिणामः परिवर्तनशीलः भवति, अतः केवलं अन्तिम-पैरामीटर्-रूपेण एव उपयोक्तुं शक्यते ।
function getProduct(...values,lastValue){}//不可以 function ignoreFirst(firstValue,...values){console.log(values)}//可以 ignoreFirst(); // [] ignoreFirst(1); // [] ignoreFirst(1,2); // [2] ignoreFirst(1,2,3); // [2, 3]
कार्यघोषणा तथा कार्यव्यञ्जना
कस्यापि कोडस्य निष्पादनात् पूर्वं जावास्क्रिप्ट् इञ्जिन् फंक्शन् घोषणां पठति तथा च निष्पादनसन्दर्भे फंक्शन् परिभाषां जनयति । फंक्शन् अभिव्यक्तिः तावत् प्रतीक्षितुम् अर्हति यावत् कोडः स्वपङ्क्तौ निष्पादितः न भवति ततः पूर्वं निष्पादनसन्दर्भे फंक्शन् परिभाषा उत्पन्ना भवति ।
// 没问题 console.log(sum(10, 10)); function sum(num1, num2) { return num1 + num2; } /*函数声明提升*/ // 会出错 console.log(sum(10, 10)); let sum = function(num1, num2) { return num1 + num2; };