ES2020 рдирд╡рд╛рдЪрд╛рд░ рдЬреЛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИрдВ

рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ 2015 рдореЗрдВ ES6 рдорд╛рдирдХ рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИред рддрдм рд╕реЗ, рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рд╛рдирджрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреА рд╣реИрдВред ES2020 рдорд╛рдирдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдирдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдПрдХ рдЕрдВрддрд┐рдо рд╕реВрдЪреА рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдИ рдЬрд╛ рдЪреБрдХреА рд╣реИ, рдЬрд┐рд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдордВрдЬреВрд░реА рдХреЗ рдмрд╛рдж рдорд╛рдирдХ рдореЗрдВ рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЬреЗрдПрд╕ рдХреЗ рд╕рднреА рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдЗрди рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╡реЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реИрдВред рдЙрдирдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЙрдирдХреЗ рд▓рд┐рдП рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рдХрдард┐рди рдерд╛, рдЬрд┐рдирдореЗрдВ рд╡реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдирдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╡реЗ рдкрд╣рд▓реЗ рднрд╛рд╖рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ, рддреЛ рд╡реЗ рдЙрд╕реЗ рдмрд╣реБрдд рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдмрдЪрд╛ рд▓реЗрддреЗред





рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрди


рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪреЗрдирд┐рдВрдЧ, рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, ES2020 рдорд╛рдирдХ рдХреА рд╕рдмрд╕реЗ рд░реЛрдорд╛рдВрдЪрдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдореИрдВрдиреЗ рдХрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред 

рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдЧреБрдгреЛрдВ рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╣реБрдВрдЪ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ, рдЬрд┐рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ рдЖрдЧрдорди рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдерд╛ред

тЦН рд╡реИрдХрд▓реНрдкрд┐рдХ рдЬрдВрдЬреАрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб


const user = {
   firstName:"Joseph",
   lastName:"Kuruvilla",
   age:38,
   address:{
      number:"239",
      street:"Ludwig Lane",
      city:"Chennai",
      zip:"600028",
   prop1:{
    prop2:{
     prop3:{
      prop4:{
       value:'sample'
      }
     }
    }
   }
   }
}
if(user && user.address){
 console.log(user.address.zip);
 //600028
}
if(user && user.address && user.address.prop1 && user.address.prop1.prop2 && user.address.prop1.prop2.prop3 && user.address.prop1.prop2.prop3.prop4){
 console.log(user.address.prop1.prop2.prop3.prop4.value);
 //sample
}
//    
console.log(user.address.prop102.po);
//Error

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдШрдЯрдирд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ Cannot read property 'po' of undefined, рдШреЛрдВрд╕рд▓реЗ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдкрд░, рдЙрдирдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдШреЛрдВрд╕рд▓реЗ рдХреА рдЧрд╣рд░рд╛рдИ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рднреА рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЦреБрдж рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЙрди рдЧреБрдгреЛрдВ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ nullрдпрд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВ undefinedред

тЦН рд╡реИрдХрд▓реНрдкрд┐рдХ рдЬрдВрдЬреАрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж рдХреЛрдб


рдЬрд┐рд╕ рдХреЛрдб рдХреА рд╣рдордиреЗ рд╕рдореАрдХреНрд╖рд╛ рдХреА, рдЙрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЗ рдЖрдЧрдорди рд╕реЗ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдПрдореНрдмреЗрдбреЗрдб рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛рдо рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ?.ред рдпрд╣ рд╣рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ nullрдФрд░ рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИ undefinedред

рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

const user = {
   firstName:"Joseph",
   lastName:"Kuruvilla",
   age:38,
   address:{
      number:"239",
      street:"Ludwig Lane",
      city:"Chennai",
      zip:"600028",
   prop1:{
    prop2:{
     prop3:{
      prop4:{
       value:'sample'
      }
     }
    }
   }
   }
}
console.log(user?.address?.zip);
//600028
console.log(user?.address?.prop1?.prop2?.prop3?.prop4?.value);
//sample
//    
console.log(user?.address?.prop102?.po);
//undefined

рдЕрдЪреНрдЫрд╛, рдХреНрдпрд╛ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реИ? рдЗрд╕ рдирд╡рд╛рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, ES2020 рдиреЗ рдХреЛрдб рдХреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ред

рдХреЗрд╡рд▓ рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛


рдХреЗрд╡рд▓ nullрдФрд░ undefined(Nullish Coalescing) рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реЛрдиреЗ рдкрд░ рднреА рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рдХрд┐рдпрд╛ред рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЙрдкрдпреБрдХреНрдд рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ "рдЧрд▓рдд" рдФрд░ "рд╕рд╣реА" рдЕрд░реНрде рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ "рд╢реВрдиреНрдп" рдорд╛рдиреЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрди рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ nullрдФрд░ undefinedред "рдЧрд▓рдд" рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд░реНрддреЛрдВ рд╕реЗ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕рдВрдЦреНрдпрд╛ 0, рдореВрд▓реНрдпреЛрдВ undefined, null, false, NaNред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдЭреВрда" рдХреЗ рд▓рд┐рдП рдорд╛рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдорд╛рди рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧреАundefined, рдФрд░ рднреА рдмрд╣реБрдд рдХреБрдЫред рдФрд░ рдХреНрдпрд╛ рдпрд╣ "рд╢реВрдиреНрдп" рд╣реИ рдХреЗ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ trueрдХреЗрд╡рд▓ nullрдФрд░ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧреА undefinedред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрд╡рд╕рд░ рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрддрдирд╛ рдЕрджреНрднреБрдд рди рд▓рдЧреЗ, рд▓реЗрдХрд┐рди, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЖрдЗрдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

N рдХреЗрд╡рд▓ рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рддрдХ рдХреЛрдб


рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВ рдПрдХ рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рдореБрдЭреЗ рдкреНрд░рдХрд╛рд╢ рдФрд░ рдЕрдВрдзреЗрд░реЗ рд╡рд┐рд╖рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЙрд╕реА рд╕рдордп, рдореБрдЭреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдереА, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ trueрдпрд╛ рдирд╣реАрдВ falseред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреЛрдИ рдорд╛рди рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд░рд╛рдмрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП trueред рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ nullрдФрд░ рдХреЗрд╡рд▓ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ undefined:

const darkModePreference1 = true
const darkModePreference2 = false
const darkModePreference3 = undefined
const darkModePreference4 = null
const getUserDarkModePreference = (darkModePreference) => {
  if (darkModePreference || darkModePreference === false) {
    return darkModePreference
  }
  return true
}
getUserDarkModePreference(darkModePreference1) 
// true
getUserDarkModePreference(darkModePreference2) 
// false
getUserDarkModePreference(darkModePreference3) 
// true
getUserDarkModePreference(darkModePreference4) 
// true

Un рдХреЗрд╡рд▓ рдЕрд╢рдХреНрдд рдФрд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рдж рдХреЛрдб


рдПрдХ рдмрд╛рд░ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдЬрд╛рдБрдЪ nullрдФрд░ undefinedрдкрд░реНрдпрд╛рдкреНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреА ??ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдПрдХ рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ if:

const darkModePreference1 = true
const darkModePreference2 = false
const darkModePreference3 = undefined
const darkModePreference4 = null
const getUserDarkModePreference = (darkModePreference) => {
  return darkModePreference ?? true;
}
getUserDarkModePreference(darkModePreference1) 
// true
getUserDarkModePreference(darkModePreference2) 
// false
getUserDarkModePreference(darkModePreference3) 
// true
getUserDarkModePreference(darkModePreference4) 
// true

рдпрд╣рд╛рдБ рдирд┐рдореНрди рд╣реЛрддрд╛ рд╣реИ: рдпрджрд┐ рдЪрд░ darkModePreferenceрдореЗрдВ "рд╢реВрдиреНрдп" рдорд╛рди рд╣реИ, рддреЛ рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ trueред рдЗрд╕рд╕реЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреЙрдореНрдкреИрдХреНрдЯ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд


рдбрд╛рдпрдиреЗрдорд┐рдХ рдЖрдпрд╛рдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдХрдиреАрдХ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдмрд┐рдирд╛, рдЬреЗрдПрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЖрдпрд╛рдд рдирд╣реАрдВ рд╣реИред ES2020 рд╕реЗ рдкрд╣рд▓реЗ, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЪрд╛рд╣реЗ рд╡реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╣реЛрдВ рдпрд╛ рдирд╣реАрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдкреАрдбреАрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

Imports рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╕реЗ рдкрд╣рд▓реЗ рдХреЛрдб


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдпрд╣ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреАрдбреАрдПрдл рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдЖрдЧрдВрддреБрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреГрд╖реНрда рдкрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрд┐рдд рдореЙрдбреНрдпреВрд▓, рд╡реИрд╕реЗ рднреА, рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреЗрдЬ рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдореЙрдбреНрдпреВрд▓, рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

import { exportAsPdf } from './export-as-pdf.js'
const exportPdfButton = document.querySelector('.exportPdfBtn');
exportPdfButton.addEventListener('click', exportAsPdf);

рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрдЧрдо рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рдкреГрдердХреНрдХрд░рдг рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╡реЗрдмрдкреИрдХ рдпрд╛ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рд▓реЛрдбрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ (рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░рд╛рд╢рд┐ рдЦрд░реНрдЪ рдХрд░рдирд╛)ред

рд▓реЗрдХрд┐рди рдЕрдм, ES2020 рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд▓реЛрдб рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдмрдВрдбрд▓реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

ред рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж рдХреЛрдб


const exportPdfButton = document.querySelector('.exportPdfBtn');
exportPdfButton.addEventListener('click', () => {
  import('./export-as-pdf.js')
    .then(module => {
      module.exportAsPdf()
    })
    .catch(err => {
      //      -  
    })
})

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдм рдЖрдк рдХреЗрд╡рд▓ рдЙрдЪрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ рд▓реЛрдб рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрд▓рд╕реА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреЗрдЬ рд▓реЛрдбрд┐рдВрдЧ рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рдирд┐рд░реНрдорд╛рдг Promise.allSettled


рдпрджрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрджрд┐ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Promise.all()ред рд╕рдЪ рд╣реИ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИред рдпрджрд┐ рдХреЛрдИ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдЧреАред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдм рддрдХ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рд╡рд╛рджреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗред

рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╢рд╛рдпрдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рджреГрд╢реНрдп рдЖрдкрдХреЛ рдкрд╕рдВрдж рдЖрдПрдЧрд╛: тАЬрдкрд░рд┐рдгрд╛рдо рдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд╕рднреА рд╡рд╛рджреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред тАЭ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ Promise.allSettled()ред рдЕрдиреНрдп рд╡рд╛рджреЛрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╛рджрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдпрд╛ рдЕрд╕рдлрд▓ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

ред Promise.all рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдХреЛрдб


const PromiseArray = [
    Promise.resolve(100),
    Promise.reject(null),
    Promise.resolve("Data release"),
    Promise.reject(new Error('Something went wrong'))];
Promise.all(PromiseArray)
  .then(data => console.log('all resolved! here are the resolve values:', data))
  .catch(err => console.log('got rejected! reason:', err))
//got rejected! reason: null

рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдпрд╣ Promise.allрдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рд╡рд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рдмрд╛рдж рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИред

ред рдХреЛрдб рдЬреЛ Promise.allSettled рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ


const PromiseArray = [
    Promise.resolve(100),
    Promise.reject(null),
    Promise.resolve("Data release"),
    Promise.reject(new Error('Something went wrong'))];
Promise.allSettled(PromiseArray).then(res =>{
console.log(res);
}).catch(err => console.log(err));
//[
//{status: "fulfilled", value: 100},
//{status: "rejected", reason: null},
//{status: "fulfilled", value: "Data release"},
//{status: "rejected", reason: Error: Something went wrong ...}
//]

рдФрд░ рдпрд╣рд╛рдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╡рд╛рджреЗ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ Promise.allSettledрд╕рднреА рд╡рд╛рджреЛрдВ рдХреЛ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдЕрдиреНрдп рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ


тЦН BigInt рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░


рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ BigIntрдЖрдкрдХреЛ рдЙрди рдирдВрдмрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд▓рдВрдмрд╛рдИ рдЙрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рд▓рдВрдмрд╛рдИ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡рд╣ ( pow(2,53)-1) рджрд┐рдЦрд╛рдИ рджреЗ ред рд╕рдЪ рд╣реИ, рдпрд╣ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкрд╣рд▓реЗ рдХреА рднрд╛рд╖рд╛ рдореЗрдВ рдХреНрдпрд╛ рдерд╛ рдХреЗ рд╕рд╛рде рдкреАрдЫреЗ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред IEEE 754 рдорд╛рдирдХ, рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд╛рд░ рд╣реИ, рдЙрди рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИBigInt

Method String.prototyp.matchAll рд╡рд┐рдзрд┐


рд╡рд┐рдзрд┐ String.prototype.matchAll()рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдпрд╣ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рд╕рдореВрд╣реЛрдВ рд╕рд╣рд┐рдд рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдореИрдЪреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

T рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрдкрддреНрддрд┐ GlobalThis


рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрдкрддреНрддрд┐ globalThisрдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЕрдиреБрд░реВрдк рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХрд╛ рд╕рдВрджрд░реНрдн рд░рдЦрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ windowред Node.js рдореЗрдВ, рдпрд╣ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ globalред рд╡реЗрдм рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рдУрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ selfред

ES2020 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдХреМрди рд╕реЗ рдирд╡рд╛рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИрдВ?


All Articles