Javascript: 2 yoki undan ortiq bildirilmagan o'zgaruvchining qiymatini qabul qilish

A va B 2 o'zgaruvchilar bor. Ulardan biri deklaratsiyalanmagan bo'ladi, ikkinchisining qiymati bo'ladi. If statements-dan foydalanish o'rniga, ikkalasini birgina o'zgaruvchini shakllantirish uchun yanada oqilona usul bormi? Shu kabi:

if(A) {
    X = A
} else if(B) {
    X = B
}

Ikki ifodalar nisbatan kichik kod bo'lishi mumkin, ammo kelajakda bu kabi 2 dan ortiq o'zgaruvchiga ega bo'lishi mumkinligini inobatga olsak - buni amalga oshirishning eng yaxshi usuli bormi?

Berilgan har qanday yordam juda qadrlanadi!

EDIT: Kechirasiz, ulardan biri noma'lum. Agar X = A || kabi bir narsa qilsam B Men noto'g'ri ma'lumotnoma xatosini olaman

2
Salom @ JLRishe, javobingiz uchun rahmat. Facebook va elektron pochta hisoblari uchun meteor hisobidan ro'yxatdan o'tish paketlaridan foydalanmoqdaman. Foydalanuvchi nomini olganidan keyin foydalanuvchi turli xil parametrlar sifatida o'tib ketadi, shuning uchun ularni bir xil o'zgarmaydiganga tenglashtirmoqchi bo'ldim
qo'shib qo'ydi muallif Poh Zi How, manba
Salom @ JLRishe, javobingiz uchun rahmat. Facebook va elektron pochta hisoblari uchun meteor hisobidan ro'yxatdan o'tish paketlaridan foydalanmoqdaman. Foydalanuvchi nomini olganidan keyin foydalanuvchi turli xil parametrlar sifatida o'tib ketadi, shuning uchun ularni bir xil o'zgarmaydiganga tenglashtirmoqchi bo'ldim
qo'shib qo'ydi muallif Poh Zi How, manba
Salom @ JLRishe, javobingiz uchun rahmat. Facebook va elektron pochta hisoblari uchun meteor hisobidan ro'yxatdan o'tish paketlaridan foydalanmoqdaman. Foydalanuvchi nomini olganidan keyin foydalanuvchi turli xil parametrlar sifatida o'tib ketadi, shuning uchun ularni bir xil o'zgarmaydiganga tenglashtirmoqchi bo'ldim
qo'shib qo'ydi muallif Poh Zi How, manba
@JLTo'g'ri maqola shu erda: guide.meteor.com/accounts.html , lekin men Fikrimcha, Facebook bitini bu qadar batafsil tushuntirib beradi. Ehtimol, foydalanuvchi sxemasini bir-biriga mos keladigan tarzda integratsiya qilishning bir yo'li bo'lishi kerak
qo'shib qo'ydi muallif Poh Zi How, manba
@JLTo'g'ri maqola shu erda: guide.meteor.com/accounts.html , lekin men Fikrimcha, Facebook bitini bu qadar batafsil tushuntirib beradi. Ehtimol, foydalanuvchi sxemasini bir-biriga mos keladigan tarzda integratsiya qilishning bir yo'li bo'lishi kerak
qo'shib qo'ydi muallif Poh Zi How, manba
@JLTo'g'ri maqola shu erda: guide.meteor.com/accounts.html , lekin men Fikrimcha, Facebook bitini bu qadar batafsil tushuntirib beradi. Ehtimol, foydalanuvchi sxemasini bir-biriga mos keladigan tarzda integratsiya qilishning bir yo'li bo'lishi kerak
qo'shib qo'ydi muallif Poh Zi How, manba
Nima uchun birinchi navbatda deklaratsiyalangan parametrlarga ega bo'lgan kodni yozyapsiz? Bu yomon amaliyotdir va uni atrofida etaklashning usullarini izlamaslik kerak.
qo'shib qo'ydi muallif JLRishe, manba
Nima uchun birinchi navbatda deklaratsiyalangan parametrlarga ega bo'lgan kodni yozyapsiz? Bu yomon amaliyotdir va uni atrofida etaklashning usullarini izlamaslik kerak.
qo'shib qo'ydi muallif JLRishe, manba
@PohZiHow Men bu sahifani skimmedim, lekin bu savolga haqiqatan ham aloqador bo'lgan qismini ko'rmadim. Iltimos, o'zingizning savolingizni qo'g'irchoq o'zgaruvchan nomlar bilan noaniq misolni ishlatish o'rniga, vaziyatni aniq tushuntirish uchun (batafsil) tushuntirib bering. Bu juda yaxshi X-> Y muammosi bo'lishi mumkin.
qo'shib qo'ydi muallif JLRishe, manba
@PohZiHow Buning uchun hujjat bilan bog'lanishni bera olasizmi? Bu erda ko'pchilik odamlar meteor hisobini ro'yxatdan o'tkazish paketlarining nima ekanligini bilishmaydi.
qo'shib qo'ydi muallif JLRishe, manba
@PohZiHow Buning uchun hujjat bilan bog'lanishni bera olasizmi? Bu erda ko'pchilik odamlar meteor hisobini ro'yxatdan o'tkazish paketlarining nima ekanligini bilishmaydi.
qo'shib qo'ydi muallif JLRishe, manba
@PohZiHow Buning uchun hujjat bilan bog'lanishni bera olasizmi? Bu erda ko'pchilik odamlar meteor hisobini ro'yxatdan o'tkazish paketlarining nima ekanligini bilishmaydi.
qo'shib qo'ydi muallif JLRishe, manba
Nima uchun birinchi navbatda deklaratsiyalangan parametrlarga ega bo'lgan kodni yozyapsiz? Bu yomon amaliyotdir va uni atrofida etaklashning usullarini izlamaslik kerak.
qo'shib qo'ydi muallif JLRishe, manba
X = A | | B || C | | ...; .
qo'shib qo'ydi muallif Xufox, manba
X = A | | B || C | | ...; .
qo'shib qo'ydi muallif Xufox, manba

16 javoblar

Agar aslida undefined emas, birinchi qiymatni topmoqchi bo'lsangiz, qiymatlar aniqlanmaganligini tekshirishingiz kerak. 0 qiymati undefined emas, balki A bo'lsa, if (A) foydalanayotgan bo'lsangiz 0 , keyin if iborasi tanasi atlanacaktır.

Bu erda birinchi aniqlanmagan qiymatni tanlashning qisqacha yo'li:

var myValue = [A, B, C, D].find(function (val) {
    return typeof val !== 'undefined';
});

Yoki o'q funksiyalaridan foydalanishingiz mumkin bo'lgan muhit uchun yozsangiz:

var myValue = [A, B, C, D].find(val => typeof val !== 'undefined');
3
qo'shib qo'ydi

Agar aslida undefined emas, birinchi qiymatni topmoqchi bo'lsangiz, qiymatlar aniqlanmaganligini tekshirishingiz kerak. 0 qiymati undefined emas, balki A bo'lsa, if (A) foydalanayotgan bo'lsangiz 0 , keyin if iborasi tanasi atlanacaktır.

Bu erda birinchi aniqlanmagan qiymatni tanlashning qisqacha yo'li:

var myValue = [A, B, C, D].find(function (val) {
    return typeof val !== 'undefined';
});

Yoki o'q funksiyalaridan foydalanishingiz mumkin bo'lgan muhit uchun yozsangiz:

var myValue = [A, B, C, D].find(val => typeof val !== 'undefined');
3
qo'shib qo'ydi

Agar aslida undefined emas, birinchi qiymatni topmoqchi bo'lsangiz, qiymatlar aniqlanmaganligini tekshirishingiz kerak. 0 qiymati undefined emas, balki A bo'lsa, if (A) foydalanayotgan bo'lsangiz 0 , keyin if iborasi tanasi atlanacaktır.

Bu erda birinchi aniqlanmagan qiymatni tanlashning qisqacha yo'li:

var myValue = [A, B, C, D].find(function (val) {
    return typeof val !== 'undefined';
});

Yoki o'q funksiyalaridan foydalanishingiz mumkin bo'lgan muhit uchun yozsangiz:

var myValue = [A, B, C, D].find(val => typeof val !== 'undefined');
3
qo'shib qo'ydi

Siz || operatoridan foydalanishingiz mumkin:

X = A || B

Qisqasi, expr1 || expr2 || expr3 | ... , rostga aylantirilishi mumkin bo'lgan birinchi ifodani qaytaradi

3
qo'shib qo'ydi
A == 0 va B == 'b' bo'lsa, u holda (A | | B) == Agar Javascriptning boolean mantiqini ishlatishini yodda tuting 'b' .
qo'shib qo'ydi muallif Daniel T., manba
Albatta siz haqsiz. Rahmat! Biroq, agar if dan foydalanib, savoldan namuna olinadi
qo'shib qo'ydi muallif Bartek Fryzowicz, manba

Siz || operatoridan foydalanishingiz mumkin:

X = A || B

Qisqasi, expr1 || expr2 || expr3 | ... , rostga aylantirilishi mumkin bo'lgan birinchi ifodani qaytaradi

3
qo'shib qo'ydi
A == 0 va B == 'b' bo'lsa, u holda (A | | B) == Agar Javascriptning boolean mantiqini ishlatishini yodda tuting 'b' .
qo'shib qo'ydi muallif Daniel T., manba
Albatta siz haqsiz. Rahmat! Biroq, agar if dan foydalanib, savoldan namuna olinadi
qo'shib qo'ydi muallif Bartek Fryzowicz, manba

Siz || operatoridan foydalanishingiz mumkin:

X = A || B

Qisqasi, expr1 || expr2 || expr3 | ... , rostga aylantirilishi mumkin bo'lgan birinchi ifodani qaytaradi

3
qo'shib qo'ydi
A == 0 va B == 'b' bo'lsa, u holda (A | | B) == Agar Javascriptning boolean mantiqini ishlatishini yodda tuting 'b' .
qo'shib qo'ydi muallif Daniel T., manba
Albatta siz haqsiz. Rahmat! Biroq, agar if dan foydalanib, savoldan namuna olinadi
qo'shib qo'ydi muallif Bartek Fryzowicz, manba

Ternary operatoridan foydalanishingiz mumkin:

X = A? A: B;

Yoki ko'plab o'zgaruvchilar uchun:

X = [A, B, C, D].find(x => x);

1
qo'shib qo'ydi

Ternary operatoridan foydalanishingiz mumkin:

X = A? A: B;

Yoki ko'plab o'zgaruvchilar uchun:

X = [A, B, C, D].find(x => x);

1
qo'shib qo'ydi

Buni ko'ring.

var X = (A) ? A : B;
0
qo'shib qo'ydi

Buni ko'ring.

var X = (A) ? A : B;
0
qo'shib qo'ydi

Siz shunday qila olasiz:

X = A && A || B && B;

yoki

X = A ? A : B;
0
qo'shib qo'ydi
&& A va && B kerak emas.
qo'shib qo'ydi muallif JLRishe, manba

Siz shunday qila olasiz:

X = A && A || B && B;

yoki

X = A ? A : B;
0
qo'shib qo'ydi
&& A va && B kerak emas.
qo'shib qo'ydi muallif JLRishe, manba

Siz shunday qila olasiz:

X = A && A || B && B;

yoki

X = A ? A : B;
0
qo'shib qo'ydi
&& A va && B kerak emas.
qo'shib qo'ydi muallif JLRishe, manba

Ternary operatoridan foydalanish ...

var A = null;
var B = 'This Has a Value';   
var OneVar = (A === null ? B : A);

console.log('OneVar: ' + OneVar);

Console Result: OneVar: This Has a Value

0
qo'shib qo'ydi

Ternary operatoridan foydalanish ...

var A = null;
var B = 'This Has a Value';   
var OneVar = (A === null ? B : A);

console.log('OneVar: ' + OneVar);

Console Result: OneVar: This Has a Value

0
qo'shib qo'ydi

Ternary operatoridan foydalanish ...

var A = null;
var B = 'This Has a Value';   
var OneVar = (A === null ? B : A);

console.log('OneVar: ' + OneVar);

Console Result: OneVar: This Has a Value

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