در ECMAScript 2015 ، پارامترهای تابع پیش فرض به زبان JavaScript معرفی شدند. این پارامترها به توسعه دهندگان امکان میدهند که در صورت عدم ارائه آرگومان به آنها، یک تابع را با مقادیر پیش فرض مقدار اولیه بدهند. مقداردهی پارامترهای تابع به این روش باعث می شود توابع شما راحت تر خوانده شوند و کمتر دچار خطا شوند و رفتار پیش فرض توابعی شما را فراهم می کنند. این به شما کمک می کند از خطاهای ناشی از انتقال آرگومان های تعریف نشده و آبجکت های تخریب کننده ای که وجود ندارند، جلوگیری کنید.
در این مقاله ، تفاوت بین پارامترها و آرگومان ها را مرور خواهید کرد ، یاد می گیرید که چگونه از پارامترهای پیش فرض در توابع استفاده کنید ، روش های متفاوتی برای پشتیبانی از پارامترهای پیش فرض را مشاهده میکنید ، و یاد می گیرید که از چه نوع مقادیر و عباراتی می توان به عنوان پارامترهای پیش فرض استفاده کرد. همچنین نمونه هایی را میبینید که نشان می دهد پارامترهای پیش فرض در JavaScript چگونه کار می کنند.
آرگومان ها و پارامترها
قبل از توضیح پارامترهای پیش فرض تابع ، مهم است بدانیم که پارامترها به طور پیش فرض در چه می توانند باشند. به همین دلیل ، ابتدا تفاوت بین آرگومان ها و پارامترها را در یک تابع بررسی خواهیم کرد. اگر می خواهید در مورد این تمایز اطلاعات بیشتری کسب کنید ، مقاله قبلی ما را در مجموعه JavaScript با عنوان چگونه می توان توابع را در JavaScript تعریف کرد ، بررسی کنید.
در بلوک کد زیر ، تابعی را ایجاد می کنید که مکعب یک عدد معین را ، به صورت x تعریف می کند:
// Define a function to cube a number
function cube(x) {
return x * x * x
}

متغیر x در این مثال یک پارامتر است – یک متغیر نامگذاری شده که به یک تابع منتقل می شود. یک پارامتر همیشه باید در یک متغیر باشد و هرگز نباید مقدار مستقیم داشته باشد.
اکنون به این بلوک کد بعدی نگاهی بیاندازید که تابع cube را که تازه ایجاد کرده اید فراخوانی میکند:
// Invoke cube function
cube(10)

خروجی زیر را ارائه می دهد:
Output
1000
در این حالت ، 10 یک آرگومان است – مقداری که هنگام فراخوانی به یک تابع منتقل می شود. اغلب این مقدار در یک متغیر نیز موجود خواهد بود ، مانند این مثال بعدی:
// Assign a number to a variable
const number = 10

// Invoke cube function
cube(number)

این ، همان نتیجه را ارائه خواهد داد:
Output
1000

اگر آرگومانی را به تابعی منتقل نکنید ، تابع به طور ضمنی از undefined  به عنوان مقدار استفاده می کند:
// Invoke the cube function without passing an argument
cube()

این نتیجه را به همراه دارد:
Output
NaN

در این حالت ، cube() در تلاش است تا مقدار undefined * undefined * undefined را محاسبه کند ، که منجر به NaN یا ” not a number” می شود. برای اطلاعات بیشتر در این مورد ، به بخش فهم انواع داده ها در JavaScript نگاهی بیندازید.
این رفتار خودکار بعضی اوقات می تواند مشکل ساز باشد. در بعضی موارد ، ممکن است بخواهید پارامتر مقدار داشته باشد حتی اگر هیچ آرگومانی به تابع منتقل نشده باشد. اینجاست که ویژگی پارامترهای پیش فرض در دسترس است ، موضوعی که در بخش بعدی آن را پوشش می دهیم.
دستور پارامتر پیش فرض
با اضافه کردن پارامترهای پیش فرض در ES2015 ، اکنون می توانید یک مقدار پیش فرض را به هر پارامتر اختصاص دهید ، که در صورت عدم وجود آرگومان ، تابع از آنها به جای undefined  استفاده می کند. در این بخش ابتدا نحوه انجام این کار به صورت دستی به شما نشان داده می شود و سپس با تعیین پارامترهای پیش فرض شما را راهنمایی می کند.
بدون پارامترهای پیش فرض ، برای تنظیم مقادیر پیش فرض ، باید صریحاً مقادیر undefined  را چک کنید ، همانطور که در این مثال نشان داده شده است:
// Check for undefined manually
function cube(x) {
if (typeof x === ‘undefined’) {
x = 5
}

return x * x * x
}

cube()

این از یک عبارت شرطی برای بررسی اینکه آیا مقدار به طور خودکار به عنوان undefined ارائه شده است ، استفاده میکند و سپس مقدار x را برابر 5 تعیین می کند. منجر به خروجی زیر می شود:
Output
125

در مقابل ، استفاده از پارامترهای پیش فرض ، هدف مشابهی را با کد بسیار کمتری به دست میدهد. با اختصاص دادن آن به اپراتور واگذاری برابری (=) ، همانطور که در اینجا هایلایت شده است ، می توانید مقدار پیش فرض را در cube  تنظیم کنید.
// Define a cube function with a default value
function cube(x = 5) {
return x * x * x
}

اکنون وقتی تابع cube  بدون آرگومان فراخوانی می شود ، 5 را به x اختصاص می دهد و به جای NaN مقدار محاسبه شده را برمی گرداند:
// Invoke cube function without an argument
cube()
Copy
Output
125

وقتی آرگومان وارد میشود ، همچنان به صورت در نظر گرفته شده کار میکند و مقدار پیش فرض را نادیده میگیرد:
// Invoke cube function with an argument
cube(2)
Copy
Output
8

با این وجود ، یک نکته مهم که باید به آن توجه داشته باشید اینست که مقدار پارامتر پیش فرض همچنین روی یک undefined  رونویسی میشود و به عنوان یک آرگومان برای یک تابع ، همانطور که در اینجا نشان داده می شود ، وارد میشود.
// Invoke cube function with undefined
cube(undefined)

مقدار x برابر با 5 را ارائه می دهد:
Output
125

در این حالت ، مقادیر پارامتر پیش فرض محاسبه می شوند ، و مقدار undefined  مشخصی آنها را باطل نمیکند.
اکنون که از ترکیب پایه پارامترهای پیش فرض اطلاع دارید ، در بخش بعدی نحوه کار پارامترهای پیش فرض با انواع مختلف داده ها نشان داده خواهد شد.
انواع داده های پیش فرض پارامتر
هر مقدار اولیه یا آبجکت می تواند به عنوان مقدار پارامتر پیش فرض استفاده شود. در این بخش خواهید دید که چگونه این انعطاف پذیری روش های استفاده از پارامترهای پیش فرض را افزایش می دهد.
ابتدا پارامترها را با استفاده از یک عدد ، رشته ، عدد بولی ، شی ، آرایه و مقدار null به عنوان یک مقدار پیش فرض تنظیم کنید. در این مثال از ترکیب تابع فلش استفاده می شود:
// Create functions with a default value for each data type
const defaultNumber = (number = 42) => console.log(number)
const defaultString = (string = ‘Shark’) => console.log(string)
const defaultBoolean = (boolean = true) => console.log(boolean)
const defaultObject = (object = { id: 7 }) => console.log(object)
const defaultArray = (array = [1, 2, 3]) => console.log(array)
const defaultNull = (nullValue = null) => console.log(nullValue)

وقتی این توابع بدون پارامتر فراخوانی شوند ، همه از مقادیر پیش فرض استفاده می کنند:
// Invoke each function
defaultNumber()
defaultString()
defaultBoolean()
defaultObject()
defaultArray()
defaultNull()
Copy
Output
42
“Shark”
true
{id: 7}
(3) [1, 2, 3]
null

توجه داشته باشید که هر آبجکت ایجاد شده با هر بار فراخوانی تابع در یک پارامتر پیش فرض ایجاد می شود. یکی از موارد استفاده رایج برای پارامترهای پیش فرض استفاده از این رفتار برای به دست آوردن مقادیر خارج از یک شی است. اگر سعی کنید تجزیه کنید یا به مقداری از شیئی که وجود ندارد دسترسی پیدا کنید ، خطایی نمایش داده میشود. با این حال ، اگر پارامتر پیش فرض یک شی خالی باشد ، به جای ایجاد خطا ، مقادیر undefined  را به شما می دهد
// Define a settings function with a default object
function settings(options = {}) {
const { theme, debug } = options

// Do something with settings
}

با این کار از خطای ناشی از تخریب آبجکت هایی که وجود ندارند، جلوگیری می شود.
اکنون که مشاهده کرده اید که چگونه پارامترهای پیش فرض با انواع داده های مختلف کار می کنند ، در بخش بعدی نحوه کار با چندین پارامتر پیش فرض توضیح داده می شود.
استفاده از چندین پارامتر پیش فرض
می توانید تا جایی که میخواهید از پارامترهای پیش فرض در یک تابع استفاده کنید. در این بخش نحوه انجام این کار و نحوه استفاده از آن برای دستکاری DOM در یک مثال در دنیای واقعی به شما نشان داده خواهد شد.
ابتدا یک تابع sum () را با چند پارامتر پیش فرض اعلان کنید:
// Define a function to add two values
function sum(a = 1, b = 2) {
return a + b
}

sum()

منجر به محاسبه پیش فرض زیر می شود:
Output
3

علاوه بر این ، مقدار مورد استفاده در یک پارامتر را می توان در هر پارامتر پیش فرض بعدی ، از چپ به راست استفاده کرد. به عنوان مثال ، این تابع createUser  یک کاربر userObj را به عنوان سومین پارامتر ایجاد می کند ، و تمام کاری که خود تابع انجام می دهد بازگشت userObj با دو پارامتر اول است:
// Define a function to create a user object using parameters
function createUser(name, rank, userObj = { name, rank }) {
return userObj
}

// Create user
const user = createUser(‘Jean-Luc Picard’, ‘Captain’)

اگر user را در اینجا فراخوانی کنید ، موارد زیر را دریافت خواهید کرد:
Output
{name: “Jean-Luc Picard”, rank: “Captain”}

معمولاً توصیه می شود تمام پارامترهای پیش فرض را در انتهای لیستی از پارامترها قرار دهید تا بتوانید به راحتی مقادیر اختیاری را کنار بگذارید. اگر ابتدا از یک پارامتر پیش فرض استفاده می کنید ، برای استفاده از مقدار پیش فرض باید صریحا undefined  را وارد کنید.
در اینجا مثالی با پارامتر پیش فرض در ابتدای لیست آورده شده است:
// Define a function with a default parameter at the start of the list
function defaultFirst(a = 1, b) {
return a + b
}

هنگام فراخوانی این تابع ، باید defaultFirst() را با دو آرگومان فراخوانی کنید:
defaultFirst(undefined, 2)
Copy
خروجی زیر را نشان می دهد:
Output
3

در اینجا مثالی با پارامتر پیش فرض در انتهای لیست آورده شده است:
// Define a function with a default parameter at the end of the list
function defaultLast(a, b = 1) {
return a + b
}

defaultLast(2)

همان مقدار را نشان می دهد:
Output
3

هر دو تابع نتیجه یکسانی دارند ، اما تابع دارای مقدار پیش فرض ، امکان فراخوانی بسیار شفاف تر تابع را فراهم می کند.
برای مثال در دنیای واقعی ، تابعی مطرح شده است که یک عنصر DOM را ایجاد می کند و یک برچسب متن و کلاس هایی را در صورت وجود، اضافه می کند.
// Define function to create an element
function createNewElement(tag, text, classNames = []) {
const el = document.createElement(tag)
el.textContent = text

classNames.forEach(className => {
el.classList.add(className)
})

return el
}

می توانید با چند کلاس به صورت آرایه این تابع را فراخوانی کنید:
const greeting = createNewElement(‘p’, ‘Hello!’, [‘greeting’, ‘active’])
Copy

فراخوان greeting ، مقدار زیر را می دهد:
Output
<p class=”greeting active”>Hello!</p>

اما اگر آرایه classNames را از فراخوانی تابع خارج کنید ، باز هم کار خواهد کرد.
const greeting2 = createNewElement(‘p’, ‘Hello!’)
Copy

greeting2 اکنون دارای مقدار زیر است:
Output
<p>Hello!</p>

در این مثال ، forEach () می تواند بدون مشکل در یک آرایه خالی استفاده شود. اگر آن آرایه خالی در پارامتر پیش فرض تنظیم نشده باشد ، خطای زیر را دریافت می کنید:
Output
VM2673:5 Uncaught TypeError: Cannot read property ‘forEach’ of undefined
at createNewElement (<anonymous>:5:14)
at <anonymous>:12:18

اکنون که دیدید چگونه پارامترهای پیش فرض چندگانه می توانند تعامل داشته باشند ، می توانید به بخش بعدی بروید تا ببینید که چگونه فراخوانی های تابع به عنوان پارامترهای پیش فرض کار می کنند.
فراخوانی تابع به عنوان پارامترهای پیش فرض
علاوه بر مقادیر اولیه و آبجکت ها ، نتیجه فراخوانی یک تابع می تواند به عنوان یک پارامتر پیش فرض مورد استفاده قرار گیرد.
در این بلوک کد ، یک تابع ایجاد می کنید تا یک عدد تصادفی را برگردانید ، و سپس از یک نتیجه به عنوان مقدار پارامتر پیش فرض در یک تابع cube استفاده کنید:
// Define a function to return a random number from 1 to 10
function getRandomNumber() {
return Math.floor(Math.random() * 10)
}

// Use the random number function as a default parameter for the cube function
function cube(x = getRandomNumber()) {
return x * x * x
}

اکنون فراخوانی تابع cube بدون پارامتر در هر بار فراخوانی ، نتایج بالقوه متفاوتی خواهد داشت:
// Invoke cube function twice for two potentially different results
cube()
cube()

خروجی این فراخوانی های تابع متفاوت خواهد بود:
Output
512
64

حتی می توانید مانند از روش های داخلی موجود در آبجکت Math استفاده کنید و از مقدار برگشتی در یک فراخوانی تابع به عنوان پارامتر در یک تابع دیگر استفاده کنید.
در مثال زیر یک عدد تصادفی به x اختصاص داده می شود که به عنوان پارامتر در تابع cube که ایجاد کردید استفاده می شود. سپس پارامتر y ریشه مکعب عدد را محاسبه میکند و بررسی می نماید که آیا x و y برابر هستند:
// Assign a random number to x
// Assign the cube root of the result of the cube function and x to y
function doesXEqualY(x = getRandomNumber(), y = Math.cbrt(cube(x))) {
return x === y
}

doesXEqualY()

خروجی زیر را نشان می دهد:
Output
true

حتی یک پارامتر پیش فرض می تواند یک تعریف تابع باشد ، همانطور که در این مثال مشاهده می شود ، که یک پارامتر را به عنوان تابع داخلی تعریف می کند و فراخوانی تابع parameter را برمی گرداند:
// Define a function with a default parameter that is an anonymous function
function outer(
parameter = function inner() {
return 100
}
) {
return parameter()
}

// Invoke outer function
outer()
Copy
Output
100

این تابع داخلی هر زمان که تابع خارجی فراخوانی شود ، از ابتدا ایجاد می شود.
نتیجه
در این مقاله آموختید که پارامترهای تابع پیش فرض چیست و استفاده از آنها چگونه است. اکنون می توانید از پارامترهای پیش فرض برای کمک به شفافیت و خوانایی توابع تان استفاده کنید. همچنین می توانید اشیاء و آرایه های خالی را به پارامترها اختصاص دهید تا در هنگام مواجهه با موقعیت هایی مانند بازیابی مقادیر از یک شی یا حلقه زدن در یک آرایه ، پیچیدگی و خطوط کد را کاهش دهید.
اگر می خواهید در مورد جاوا اسکریپت بیشتر بدانید ، از صفحه اصلی مجموعه درجاوااسکریپت بازدید کنید ، یا مقاله های مربوط به توسعه back-end ما را در مورد چگونگی کدنویسی در Node.js جستجو کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

پارامترهای پیش فرض در جاوا اسکریپت  –  اجرای چندین نسخه PHP بر روی یک سرور Debian 10

نحوه راه اندازی یک پروژه React با برنامه Reactنصب و ایمن سازی phpMyAdmin در اوبونتو 18

پیکربندی یک تایید اعتبار مجاز(CA) در CentOS 8  –  تنظیم برنامه Node.js برای تولید در CentOS 7

نصب MariaDB در اوبونتو 18.04  –  ایمن کردن Apache با Let’s Encrypt در Debian 10

نحوه نصب Node.js در CentOS 8  –  بازنویسی URL را با mod_rewrite برای Apache در Debian 10

راه اندازی فایروال با استفاده از firewalld در CentOS 8  –  نصب وب سرور Apache در Debian 10

اضافه کردن و حذف کاربران در CentOS 8 –  نصب Apache Tomcat 9 در Debian 10

نصب و استفاده از PostgreSQL در CentOS 8  –  راه اندازی سرور اولیه با Debian 10

نصب MariaDB در CentOS 8  –  چگونه با JSX عناصر واقعی ایجاد کنیم

نصب و پیکربندی VNC در Debian 10  –  استفاده از سرور از راه دور Docker

نصب و ایمن سازی Grafana در اوبونتو 18  –  نحوه نصب Git در CentOS 8

نصب Git در Debian 10 –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرورهای

نحوه نصب Node.js در Debian 10  –  نصب وب سرور Apache در CentOS 7

نحوه نصب Webmin در Debian 10  –  نصب و پیکربندی Zabbix برای ردیابی ایمن سرور

نصب وردپرس با بانک اطلاعاتی در اوبونتو  – ساخت و استقرار سرور GraphQL با Node.js و MongoDB

نصب پایتون 3 و تنظیم نویسی محلی macOS  – نصب و ایمن سازی phpMyAdmin با Nginx در سرور

نصب Nagios 4 و نظارت بر سرور اوبونتو 18  –  نصب Python 3 و تنظیم یک محیط برنامه نویسی

نحوه نصب R بر روی Debian 10  –  راه اندازی سرور Prisma روی اوبونتو 18.04

نصب و پیکربندی Laravel با LEMP در اوبونتو 18  –  نصب و پیکربندی pgAdmin 4 در Server Mode

نصب Python 3 و تنظیم برنامه نویسی CentOS 8نصب Jitsi Meet در Ubuntu 18.04

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 

برچسب‌ها:,