ગુજરાતી

જાવાસ્ક્રિપ્ટના નલિશ કોલેસિંગ ઓપરેટર (??) નો ઉપયોગ કરીને સ્વચ્છ અને વધુ કાર્યક્ષમ ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સમાં નિપુણતા મેળવો. તે OR ઓપરેટર (||) થી કેવી રીતે અલગ છે તે જાણો અને વ્યવહારુ ઉદાહરણો જુઓ.

જાવાસ્ક્રિપ્ટ નલિશ કોલેસિંગ: ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ માટે એક વ્યાપક માર્ગદર્શિકા

જાવાસ્ક્રિપ્ટમાં, ડિફૉલ્ટ વેલ્યુ અસાઇન કરવી એ એક સામાન્ય કાર્ય છે. પરંપરાગત રીતે, ડેવલપર્સે આ હેતુ માટે OR ઓપરેટર (||) નો ઉપયોગ કર્યો છે. જોકે, ECMAScript 2020 માં રજૂ કરાયેલ નલિશ કોલેસિંગ ઓપરેટર (??), ખાસ કરીને null અથવા undefined વેલ્યુ સાથે કામ કરતી વખતે, ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સને હેન્ડલ કરવા માટે વધુ ચોક્કસ અને વિશ્વસનીય રીત પ્રદાન કરે છે. આ માર્ગદર્શિકા નલિશ કોલેસિંગ ઓપરેટર વિશે ઊંડાણપૂર્વક માહિતી આપે છે, જેમાં તેની સિન્ટેક્સ, વર્તણૂક, OR ઓપરેટરથી તફાવત અને વ્યવહારુ ઉપયોગના કેસોની ચર્ચા કરવામાં આવી છે.

નલિશ કોલેસિંગ શું છે?

નલિશ કોલેસિંગ ઓપરેટર (??) એક લોજિકલ ઓપરેટર છે જે જ્યારે તેનો ડાબી બાજુનો ઓપરન્ડ null અથવા undefined હોય ત્યારે તેના જમણી બાજુના ઓપરન્ડને પરત કરે છે. અન્યથા, તે તેના ડાબી બાજુના ઓપરન્ડને પરત કરે છે. સરળ શબ્દોમાં કહીએ તો, તે માત્ર ત્યારે જ ડિફૉલ્ટ વેલ્યુ પ્રદાન કરે છે જ્યારે કોઈ વેરિયેબલ સ્પષ્ટપણે null અથવા undefined હોય.

સિન્ટેક્સ

નલિશ કોલેસિંગ ઓપરેટર માટેની સિન્ટેક્સ સીધી અને સરળ છે:

leftOperand ?? rightOperand

અહીં, leftOperand એ વેરિયેબલ અથવા એક્સપ્રેશન છે જેને તમે null અથવા undefined માટે તપાસવા માંગો છો, અને rightOperand એ ડિફૉલ્ટ વેલ્યુ છે જે તમે leftOperand જો ખરેખર null અથવા undefined હોય તો અસાઇન કરવા માંગો છો.

ઉદાહરણ

નીચેના ઉદાહરણને ધ્યાનમાં લો:

const username = null ?? "Guest";
console.log(username); // આઉટપુટ: Guest

const age = undefined ?? 25;
console.log(age); // આઉટપુટ: 25

const city = "London" ?? "Unknown";
console.log(city); // આઉટપુટ: London

આ ઉદાહરણમાં, username ને "Guest" ની ડિફૉલ્ટ વેલ્યુ અસાઇન કરવામાં આવી છે કારણ કે તે શરૂઆતમાં null છે. તે જ રીતે, age ને 25 અસાઇન કરવામાં આવ્યું છે કારણ કે તે undefined તરીકે શરૂ થાય છે. જોકે, city તેની મૂળ વેલ્યુ, "London", જાળવી રાખે છે, કારણ કે તે ન તો null છે કે ન તો undefined.

નલિશ vs. ફૉલ્સી વેલ્યુઝ

જાવાસ્ક્રિપ્ટમાં નલિશ અને ફૉલ્સી વેલ્યુઝ વચ્ચેનો તફાવત સમજવો મહત્વપૂર્ણ છે. નલિશ વેલ્યુ એ null અથવા undefined હોય છે. ફૉલ્સી વેલ્યુ એ એવી વેલ્યુ છે જેને બુલિયન કોન્ટેક્સ્ટમાં ખોટી ગણવામાં આવે છે. ફૉલ્સી વેલ્યુઝમાં નીચેનાનો સમાવેશ થાય છે:

મુખ્ય તફાવત એ છે કે નલિશ કોલેસિંગ ઓપરેટર ફક્ત null અથવા undefined માટે જ તપાસે છે, જ્યારે OR ઓપરેટર (||) કોઈપણ ફૉલ્સી વેલ્યુ માટે તપાસે છે.

?? અને || વચ્ચેનો તફાવત

OR ઓપરેટર (||) એક લોજિકલ OR ઓપરેટર છે જે જો ડાબી બાજુનો ઓપરન્ડ ફૉલ્સી હોય તો જમણી બાજુના ઓપરન્ડને પરત કરે છે. જોકે તેનો ઉપયોગ ડિફૉલ્ટ વેલ્યુ અસાઇન કરવા માટે થઈ શકે છે, પરંતુ તે 0 અથવા ખાલી સ્ટ્રિંગ જેવી વેલ્યુ સાથે કામ કરતી વખતે અનપેક્ષિત વર્તણૂક તરફ દોરી શકે છે.

ઉદાહરણ: || ની ખામીઓ

const quantity = 0 || 10; // જો quantity ખૂટતી હોય તો અમારો હેતુ 10 ની ડિફૉલ્ટ વેલ્યુ આપવાનો છે
console.log(quantity); // આઉટપુટ: 10 (અનપેક્ષિત!) કારણ કે 0 ફૉલ્સી છે

const text = '' || 'Default Text'; //જો text ખૂટતું હોય તો અમારો હેતુ ડિફૉલ્ટ ટેક્સ્ટ આપવાનો છે
console.log(text); // આઉટપુટ: Default Text (અનપેક્ષિત!) કારણ કે '' ફૉલ્સી છે

પહેલા ઉદાહરણમાં, અમારો હેતુ 10 ની ડિફૉલ્ટ ક્વોન્ટિટી ફક્ત ત્યારે જ અસાઇન કરવાનો હતો જો quantity ખૂટતી હોય (null અથવા undefined). જોકે, કારણ કે 0 એક ફૉલ્સી વેલ્યુ છે, OR ઓપરેટરે ખોટી રીતે ડિફૉલ્ટ વેલ્યુ અસાઇન કરી દીધી. તેવી જ રીતે, ખાલી સ્ટ્રિંગને કારણે ડિફૉલ્ટ ટેક્સ્ટ બતાવવામાં આવે છે, ભલે સ્ટ્રિંગ અસ્તિત્વમાં હોય (પરંતુ ખાલી હોય).

ચોકસાઈ માટે ?? નો ઉપયોગ

ચાલો પાછલા ઉદાહરણને નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરીને ફરીથી લખીએ:

const quantity = 0 ?? 10;
console.log(quantity); // આઉટપુટ: 0 (સાચું!)

const text = '' ?? 'Default Text';
console.log(text); // આઉટપુટ: '' (સાચું!)

હવે, આઉટપુટ અપેક્ષા મુજબ છે. નલિશ કોલેસિંગ ઓપરેટર ફક્ત null અથવા undefined માટે તપાસે છે, તેથી 0 અને '' ને માન્ય વેલ્યુ તરીકે ગણવામાં આવે છે, અને તેમની મૂળ વેલ્યુ જાળવી રાખવામાં આવે છે.

નલિશ કોલેસિંગ માટેના ઉપયોગના કેસો

નલિશ કોલેસિંગ ઓપરેટર વિવિધ પરિસ્થિતિઓમાં ઉપયોગી છે જ્યાં તમારે ફક્ત ત્યારે જ ડિફૉલ્ટ વેલ્યુ પ્રદાન કરવાની જરૂર હોય જ્યારે કોઈ વેરિયેબલ સ્પષ્ટપણે null અથવા undefined હોય. અહીં કેટલાક સામાન્ય ઉપયોગના કેસો છે:

1. ઓપ્શનલ ફંક્શન પેરામીટર્સને હેન્ડલ કરવું

જ્યારે ઓપ્શનલ પેરામીટર્સ સાથે કોઈ ફંક્શનને વ્યાખ્યાયિત કરતી વખતે, જો પેરામીટર્સ પ્રદાન કરવામાં ન આવ્યા હોય તો તમે ડિફૉલ્ટ વેલ્યુ પ્રદાન કરવા માટે નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરી શકો છો.

function greet(name, greeting) {
  const userName = name ?? "User";
  const userGreeting = greeting ?? "Hello";
  console.log(`${userGreeting}, ${userName}!`);
}

greet(); // આઉટપુટ: Hello, User!
greet("Alice"); // આઉટપુટ: Hello, Alice!
greet("Bob", "Greetings"); // આઉટપુટ: Greetings, Bob!

2. ડિફૉલ્ટ કન્ફિગરેશન ઓપ્શન્સ સેટ કરવા

કન્ફિગરેશન ઓબ્જેક્ટ્સ સાથે કામ કરતી વખતે, જો અમુક કન્ફિગરેશન ઓપ્શન્સ સ્પષ્ટ ન કરાયા હોય તો ડિફૉલ્ટ વેલ્યુનો ઉપયોગ થાય તે સુનિશ્ચિત કરવા માટે તમે નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરી શકો છો.

const config = {
  timeout: 5000,
  retries: 3
};

function fetchData(options) {
  const timeout = options.timeout ?? 10000; // 10 સેકન્ડનો ડિફૉલ્ટ ટાઇમઆઉટ
  const retries = options.retries ?? 5; // ડિફૉલ્ટ 5 રિટ્રાઇઝ
  console.log(`Timeout: ${timeout}, Retries: ${retries}`);
}

fetchData(config); // આઉટપુટ: Timeout: 5000, Retries: 3
fetchData({}); // આઉટપુટ: Timeout: 10000, Retries: 5
fetchData({timeout:null, retries: undefined}); // આઉટપુટ: Timeout: 10000, Retries: 5

3. નેસ્ટેડ ઓબ્જેક્ટ પ્રોપર્ટીઝને એક્સેસ કરવી

નેસ્ટેડ ઓબ્જેક્ટ્સની પ્રોપર્ટીઝને એક્સેસ કરતી વખતે, નલિશ કોલેસિંગ ઓપરેટરને ઓપ્શનલ ચેઇનિંગ (?.) સાથે જોડી શકાય છે જેથી જો કોઈ મધ્યવર્તી પ્રોપર્ટીઝ null અથવા undefined હોય તો ડિફૉલ્ટ વેલ્યુ પ્રદાન કરી શકાય.

const user = {
  profile: {
    address: {
      city: "New York"
    }
  }
};

const cityName = user?.profile?.address?.city ?? "Unknown";
console.log(cityName); // આઉટપુટ: New York

const unknownUser = {};
const unknownCityName = unknownUser?.profile?.address?.city ?? "Unknown";
console.log(unknownCityName); // આઉટપુટ: Unknown

4. APIs અને બાહ્ય ડેટા સાથે કામ કરવું

APIs અથવા બાહ્ય સ્રોતોમાંથી ડેટા મેળવતી વખતે, જો અમુક ડેટા ફીલ્ડ્સ ખૂટતા હોય અથવા null અથવા undefined વેલ્યુ ધરાવતા હોય તો ડિફૉલ્ટ વેલ્યુ પ્રદાન કરવા માટે નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરી શકાય છે. વિવિધ પ્રદેશોમાંથી વપરાશકર્તા ડેટા પુનઃપ્રાપ્ત કરવાનું વિચારો. ધારો કે કેટલાક પ્રદેશો તેમના વપરાશકર્તા ડેટામાં `country` ફીલ્ડનો સમાવેશ કરતા નથી.

async function getUserData(userId) {
  try {
    const response = await fetch(`https://api.example.com/users/${userId}`);
    const data = await response.json();
    const country = data.country ?? "Unknown Country";
    const timezone = data.timezone ?? "UTC";
    console.log(`User is from: ${country}, Timezone: ${timezone}`);
  } catch (error) {
    console.error("Error fetching user data:", error);
  }
}

// વિવિધ API પ્રતિસાદોનું સિમ્યુલેશન:
const userWithCountry = { name: "John", country: "USA", timezone: "EST" };
const userWithoutCountry = { name: "Jane", timezone: "GMT" };

// આને ચકાસવા માટે, તમારે વાસ્તવિક API અથવા મોક ફેચની જરૂર પડશે.
// નિદર્શન હેતુઓ માટે, ચાલો પ્રતિસાદોનું સિમ્યુલેશન કરીએ:
global.fetch = async (url) => {
    if (url.includes("123")) {
        return { json: async () => userWithCountry };
    } else if (url.includes("456")) {
        return { json: async () => userWithoutCountry };
    }
    throw new Error("Unexpected URL");
};

getUserData(123); // આઉટપુટ: User is from: USA, Timezone: EST
getUserData(456); // આઉટપુટ: User is from: Unknown Country, Timezone: GMT

ઓપરેટર પ્રેસિડેન્સ

નલિશ કોલેસિંગ ઓપરેટરની ઓપરેટર પ્રેસિડેન્સ પ્રમાણમાં ઓછી છે. તે OR (||) અને AND (&&) ઓપરેટરો કરતાં નીચી છે. તેથી, જ્યારે નલિશ કોલેસિંગ ઓપરેટરને અન્ય લોજિકલ ઓપરેટરો સાથે જોડતી વખતે, ઓપરેશન્સનો ક્રમ સ્પષ્ટપણે વ્યાખ્યાયિત કરવા માટે કૌંસનો ઉપયોગ કરવો આવશ્યક છે. આમ કરવામાં નિષ્ફળતા સિન્ટેક્સ એરર અથવા અનપેક્ષિત વર્તણૂકમાં પરિણમી શકે છે.

ઉદાહરણ: સ્પષ્ટતા માટે કૌંસનો ઉપયોગ

// કૌંસ વિના (સિન્ટેક્સ એરર)
// const result = false || null ?? "Default"; // SyntaxError: Unexpected token '??'

// કૌંસ સાથે (સાચું)
const result = false || (null ?? "Default");
console.log(result); // આઉટપુટ: Default

const anotherResult = (false || null) ?? "Default";
console.log(anotherResult); // આઉટપુટ: null

પહેલા ઉદાહરણમાં, કૌંસનો અભાવ SyntaxError માં પરિણમે છે કારણ કે જાવાસ્ક્રિપ્ટ એન્જિન ઓપરેશન્સનો હેતુપૂર્વકનો ક્રમ નક્કી કરી શકતું નથી. કૌંસ ઉમેરીને, આપણે સ્પષ્ટપણે એન્જિનને પહેલા નલિશ કોલેસિંગ ઓપરેટરનું મૂલ્યાંકન કરવા માટે કહીએ છીએ. બીજું ઉદાહરણ માન્ય છે; જોકે, આઉટપુટ અલગ છે કારણ કે || એક્સપ્રેશનનું મૂલ્યાંકન પહેલા કરવામાં આવે છે.

બ્રાઉઝર સુસંગતતા

નલિશ કોલેસિંગ ઓપરેટર (??) એક પ્રમાણમાં નવી સુવિધા છે, તેથી બ્રાઉઝર સુસંગતતા ધ્યાનમાં લેવી મહત્વપૂર્ણ છે, ખાસ કરીને જો તમે જૂના બ્રાઉઝર્સને લક્ષ્યાંકિત કરી રહ્યાં હોવ. મોટાભાગના આધુનિક બ્રાઉઝર્સ નલિશ કોલેસિંગ ઓપરેટરને સપોર્ટ કરે છે, જેમાં નીચેનાનો સમાવેશ થાય છે:

જો તમારે જૂના બ્રાઉઝર્સને સપોર્ટ કરવાની જરૂર હોય, તો તમે તમારા કોડને જાવાસ્ક્રિપ્ટના સુસંગત સંસ્કરણમાં કન્વર્ટ કરવા માટે Babel જેવા ટ્રાન્સપાઇલરનો ઉપયોગ કરી શકો છો. Babel ?? ઓપરેટરને સમકક્ષ જાવાસ્ક્રિપ્ટ કોડમાં રૂપાંતરિત કરશે જે જૂના વાતાવરણમાં કામ કરે છે.

શ્રેષ્ઠ પદ્ધતિઓ

નલિશ કોલેસિંગ ઓપરેટરનો અસરકારક રીતે ઉપયોગ કરવા માટે અહીં કેટલીક શ્રેષ્ઠ પદ્ધતિઓ છે:

વૈશ્વિક વિચારણાઓ

વૈશ્વિક પ્રેક્ષકો માટે વિકાસ કરતી વખતે, ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સ સંબંધિત નીચેના મુદ્દાઓ ધ્યાનમાં લો:

ઉદાહરણ: નલિશ કોલેસિંગ સાથે સ્થાનિકીકરણ

માની લો કે તમે વપરાશકર્તાના લોકેલના આધારે વિવિધ ભાષાઓમાં ડિફૉલ્ટ સ્વાગત સંદેશ પ્રદર્શિત કરવા માંગો છો. જો સ્થાનિકીકૃત સંદેશ ઉપલબ્ધ ન હોય તો ડિફૉલ્ટ સંદેશ પ્રદાન કરવા માટે તમે નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરી શકો છો.

function getWelcomeMessage(locale) {
  const localizedMessages = {
    en: "Welcome!",
    fr: "Bienvenue !",
    de: "Willkommen!"
  };

  const message = localizedMessages[locale] ?? "Welcome!"; // જો લોકેલ ન મળે તો અંગ્રેજીમાં ડિફૉલ્ટ કરો
  return message;
}

console.log(getWelcomeMessage("fr")); // આઉટપુટ: Bienvenue !
console.log(getWelcomeMessage("es")); // આઉટપુટ: Welcome! (અંગ્રેજીમાં ડિફૉલ્ટ થઈ રહ્યું છે)

નિષ્કર્ષ

નલિશ કોલેસિંગ ઓપરેટર (??) જાવાસ્ક્રિપ્ટ ભાષામાં એક મૂલ્યવાન ઉમેરો છે. તે OR ઓપરેટર (||) ની તુલનામાં ડિફૉલ્ટ વેલ્યુ અસાઇન કરવાની વધુ ચોક્કસ અને વિશ્વસનીય રીત પ્રદાન કરે છે, ખાસ કરીને 0 અથવા ખાલી સ્ટ્રિંગ જેવી વેલ્યુ સાથે કામ કરતી વખતે. તેની સિન્ટેક્સ, વર્તણૂક અને ઉપયોગના કેસોને સમજીને, તમે સ્વચ્છ, વધુ જાળવી શકાય તેવો કોડ લખી શકો છો જે ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સને ચોક્કસપણે હેન્ડલ કરે છે. તમારા પ્રોજેક્ટ્સમાં નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરતી વખતે બ્રાઉઝર સુસંગતતા, ઓપરેટર પ્રેસિડેન્સ અને વૈશ્વિક વિચારણાઓને ધ્યાનમાં રાખવાનું યાદ રાખો.

આ માર્ગદર્શિકામાં દર્શાવેલ શ્રેષ્ઠ પદ્ધતિઓનું પાલન કરીને, તમે તમારા જાવાસ્ક્રિપ્ટ કોડની ગુણવત્તા અને વિશ્વસનીયતા સુધારવા માટે નલિશ કોલેસિંગ ઓપરેટરનો અસરકારક રીતે લાભ લઈ શકો છો, તેને વધુ મજબૂત અને સમજવામાં સરળ બનાવી શકો છો. તમારા કોડમાં હંમેશા સ્પષ્ટતા અને જાળવણીક્ષમતાને પ્રાધાન્ય આપવાનું યાદ રાખો, અને આ લક્ષ્યોને પ્રાપ્ત કરવા માટે નલિશ કોલેસિંગ ઓપરેટર એક શક્તિશાળી સાધન બની શકે છે.