Bir funktsiyaning standart argument qiymati, ajratilgan vazifa

Bolalar, ba'zi nazariya bu erda ishlaydi.

Funktsiya mavjud -

function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
console.log( x, y )
}; 

Bu erda tuklar tuyuladi

lol();//10, 10
lol( {}, {} );//10, undefined
  1. Nima uchun bo'sh ob'ektdan so'ng undefined ni olaman?
  2. Lol() funktsiyasida nima uchun y uchun 10 standart qiymatini olaman?

Yo'qolganman, yordamga muhtojman!

0
Bu aslida bu bir bilan bir xil savol.
qo'shib qo'ydi muallif lonesomeday, manba
Darhaqiqat, ko'proq yaxshilab qidirish kerak.
qo'shib qo'ydi muallif Serge Nikolaev, manba
Darhaqiqat, ko'proq yaxshilab qidirish kerak.
qo'shib qo'ydi muallif Serge Nikolaev, manba

6 javoblar

y uchun hech narsa o'tmaganingizda, {y: 10} ko'rsatuv qiymatini olasiz va shuning uchun y 10-dir.

Bo'sh ob'ektni JS ga o'tib, {y} tufayli y xususiyatini olishga harakat qiladi. Ob'ektda y xususiyati mavjud bo'lmaganligi uchun siz undefined bo'lasiz.

2
qo'shib qo'ydi

y uchun hech narsa o'tmaganingizda, {y: 10} ko'rsatuv qiymatini olasiz va shuning uchun y 10-dir.

Bo'sh ob'ektni JS ga o'tib, {y} tufayli y xususiyatini olishga harakat qiladi. Ob'ektda y xususiyati mavjud bo'lmaganligi uchun siz undefined bo'lasiz.

2
qo'shib qo'ydi

Agar shunday qilsangiz:

(function ({x = 10}) {
  console.log(x)
})()

"TypeError" bo'lishi mumkin: "undefined" yoki "null" va agar harakat qilsangiz:

(function ({x} = {}) {
  console.log(x)
})()

Endi, bu undefined ni beradi.


Bu quyidagicha:

function({x} = {}) { ... }

x is matched with undefined, as no property on right-hand-side of assignment has the property x.

function({x = 10} = {}) {...}

Shunga qaramay x kodi undefined bilan mos keladi, shuning uchun 10 standart qiymatini oladi.


Boshqa tarafdan, sizning ikkinchi dalilingiz (alohida olingan)

function({ y } = { y : 10 }) {...}

bu erda o'yin bo'ladi va y qiymatni 10 sifatida oladi lekin bo'sh ob'ektdan o'tsangiz, asl qiymati argument ob'ekti {y: 10} bekor qilinadi.

bu quyidagilarga teng ekvivalent:

function({ y } = {}) {...}

Here, you don't have anything to match y with, so it gets set to undefined

2
qo'shib qo'ydi
:) Xayr, bu foydali bo'ldi.
qo'shib qo'ydi muallif Amresh Venugopal, manba
Vau, rahmat, Amresh! Endi men ushbu mavzuda 100% ga erishdim. Juda boy tushuntirish.
qo'shib qo'ydi muallif Serge Nikolaev, manba

Agar shunday qilsangiz:

(function ({x = 10}) {
  console.log(x)
})()

"TypeError" bo'lishi mumkin: "undefined" yoki "null" va agar harakat qilsangiz:

(function ({x} = {}) {
  console.log(x)
})()

Endi, bu undefined ni beradi.


Bu quyidagicha:

function({x} = {}) { ... }

x is matched with undefined, as no property on right-hand-side of assignment has the property x.

function({x = 10} = {}) {...}

Shunga qaramay x kodi undefined bilan mos keladi, shuning uchun 10 standart qiymatini oladi.


Boshqa tarafdan, sizning ikkinchi dalilingiz (alohida olingan)

function({ y } = { y : 10 }) {...}

bu erda o'yin bo'ladi va y qiymatni 10 sifatida oladi lekin bo'sh ob'ektdan o'tsangiz, asl qiymati argument ob'ekti {y: 10} bekor qilinadi.

bu quyidagilarga teng ekvivalent:

function({ y } = {}) {...}

Here, you don't have anything to match y with, so it gets set to undefined

2
qo'shib qo'ydi
:) Xayr, bu foydali bo'ldi.
qo'shib qo'ydi muallif Amresh Venugopal, manba
Vau, rahmat, Amresh! Endi men ushbu mavzuda 100% ga erishdim. Juda boy tushuntirish.
qo'shib qo'ydi muallif Serge Nikolaev, manba

Nima uchun bo'sh ob'ektdan so'ng undefined ni olishim kerak?

Ob'ektni ishlatganingiz uchun asl qiymati hech qanday qiymat belgilanmaydi.

         lol(              {},         {}         );//10, undefined
function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
// resolves to
function lol( { x = 10 } = {}, { y } = {}         ) {

Agar lol() funktsiyasida nima uchun y uchun 10 standart qiymatini olsam?

Ob'ektni etkazmaganingiz uchun. Keyinchalik sukut ob'ekt olinadi va buzilmasdan asl ob'ekt bilan amalga oshiriladi.

         lol(                                     );//10, undefined
function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
// resolves to
function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
0
qo'shib qo'ydi

Nima uchun bo'sh ob'ektdan so'ng undefined ni olishim kerak?

Ob'ektni ishlatganingiz uchun asl qiymati hech qanday qiymat belgilanmaydi.

         lol(              {},         {}         );//10, undefined
function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
// resolves to
function lol( { x = 10 } = {}, { y } = {}         ) {

Agar lol() funktsiyasida nima uchun y uchun 10 standart qiymatini olsam?

Ob'ektni etkazmaganingiz uchun. Keyinchalik sukut ob'ekt olinadi va buzilmasdan asl ob'ekt bilan amalga oshiriladi.

         lol(                                     );//10, undefined
function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
// resolves to
function lol( { x = 10 } = {}, { y } = { y : 10 } ) {
0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb