જાવાસ્ક્રિપ્ટના નલિશ કોલેસિંગ ઓપરેટર (??) નો ઉપયોગ કરીને સ્વચ્છ અને વધુ કાર્યક્ષમ ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સમાં નિપુણતા મેળવો. તે 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
0
(શૂન્ય)NaN
(નોટ અ નંબર)''
(ખાલી સ્ટ્રિંગ)false
મુખ્ય તફાવત એ છે કે નલિશ કોલેસિંગ ઓપરેટર ફક્ત 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
માં પરિણમે છે કારણ કે જાવાસ્ક્રિપ્ટ એન્જિન ઓપરેશન્સનો હેતુપૂર્વકનો ક્રમ નક્કી કરી શકતું નથી. કૌંસ ઉમેરીને, આપણે સ્પષ્ટપણે એન્જિનને પહેલા નલિશ કોલેસિંગ ઓપરેટરનું મૂલ્યાંકન કરવા માટે કહીએ છીએ. બીજું ઉદાહરણ માન્ય છે; જોકે, આઉટપુટ અલગ છે કારણ કે ||
એક્સપ્રેશનનું મૂલ્યાંકન પહેલા કરવામાં આવે છે.
બ્રાઉઝર સુસંગતતા
નલિશ કોલેસિંગ ઓપરેટર (??
) એક પ્રમાણમાં નવી સુવિધા છે, તેથી બ્રાઉઝર સુસંગતતા ધ્યાનમાં લેવી મહત્વપૂર્ણ છે, ખાસ કરીને જો તમે જૂના બ્રાઉઝર્સને લક્ષ્યાંકિત કરી રહ્યાં હોવ. મોટાભાગના આધુનિક બ્રાઉઝર્સ નલિશ કોલેસિંગ ઓપરેટરને સપોર્ટ કરે છે, જેમાં નીચેનાનો સમાવેશ થાય છે:
- Chrome 80+
- Firefox 72+
- Safari 13.1+
- Edge 80+
- Node.js 14+
જો તમારે જૂના બ્રાઉઝર્સને સપોર્ટ કરવાની જરૂર હોય, તો તમે તમારા કોડને જાવાસ્ક્રિપ્ટના સુસંગત સંસ્કરણમાં કન્વર્ટ કરવા માટે Babel જેવા ટ્રાન્સપાઇલરનો ઉપયોગ કરી શકો છો. Babel ??
ઓપરેટરને સમકક્ષ જાવાસ્ક્રિપ્ટ કોડમાં રૂપાંતરિત કરશે જે જૂના વાતાવરણમાં કામ કરે છે.
શ્રેષ્ઠ પદ્ધતિઓ
નલિશ કોલેસિંગ ઓપરેટરનો અસરકારક રીતે ઉપયોગ કરવા માટે અહીં કેટલીક શ્રેષ્ઠ પદ્ધતિઓ છે:
- નલિશ ચેક્સ માટે
??
નો ઉપયોગ કરો: જ્યારે તમે ખાસ કરીને કોઈ વેરિયેબલnull
અથવાundefined
હોય ત્યારે જ ડિફૉલ્ટ વેલ્યુ પ્રદાન કરવા માંગતા હો ત્યારે નલિશ કોલેસિંગ ઓપરેટર (??
) નો ઉપયોગ કરો. - જટિલ એક્સપ્રેશન્સ માટે કૌંસનો ઉપયોગ કરો: જ્યારે નલિશ કોલેસિંગ ઓપરેટરને અન્ય લોજિકલ ઓપરેટરો સાથે જોડતી વખતે, ઓપરેશન્સનો ક્રમ સ્પષ્ટપણે વ્યાખ્યાયિત કરવા માટે કૌંસનો ઉપયોગ કરો.
- બ્રાઉઝર સુસંગતતા ધ્યાનમાં લો: બ્રાઉઝર સુસંગતતા તપાસો અને જો જરૂરી હોય તો જૂના બ્રાઉઝર્સને સપોર્ટ કરવા માટે ટ્રાન્સપાઇલરનો ઉપયોગ કરો.
- સતત ઉપયોગ કરો: પ્રોજેક્ટમાં વધુ અનુમાનિત કોડિંગ શૈલી માટે જ્યાં યોગ્ય હોય ત્યાં
??
અપનાવો. - ઓપ્શનલ ચેઇનિંગ સાથે જોડો: ઓબ્જેક્ટ્સની નેસ્ટેડ પ્રોપર્ટીઝને સુરક્ષિત રીતે એક્સેસ કરવા અને ડિફૉલ્ટ વેલ્યુ અસાઇન કરવા માટે ઓપ્શનલ ચેઇનિંગ
?.
સાથે??
નો ઉપયોગ કરો.
વૈશ્વિક વિચારણાઓ
વૈશ્વિક પ્રેક્ષકો માટે વિકાસ કરતી વખતે, ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સ સંબંધિત નીચેના મુદ્દાઓ ધ્યાનમાં લો:
- સ્થાનિકીકરણ (Localization): વપરાશકર્તાની ભાષા અથવા પ્રદેશના આધારે ડિફૉલ્ટ વેલ્યુને સ્થાનિકીકરણ કરવાની જરૂર પડી શકે છે. ઉદાહરણ તરીકે, ડિફૉલ્ટ કરન્સી સિમ્બોલ અથવા તારીખ ફોર્મેટ.
- સાંસ્કૃતિક ધોરણો: અમુક ડિફૉલ્ટ વેલ્યુને સાંસ્કૃતિક ધોરણોના આધારે સમાયોજિત કરવાની જરૂર પડી શકે છે. ઉદાહરણ તરીકે, ડિફૉલ્ટ શુભેચ્છા સંદેશ વિવિધ સંસ્કૃતિઓમાં અલગ હોઈ શકે છે.
- ઍક્સેસિબિલિટી: સુનિશ્ચિત કરો કે ડિફૉલ્ટ વેલ્યુ વિકલાંગ વપરાશકર્તાઓ માટે સુલભ અને સમજી શકાય તેવી હોય. વપરાશકર્તા ઇન્ટરફેસમાં ડિફૉલ્ટ વેલ્યુ માટે સ્પષ્ટ અને વર્ણનાત્મક લેબલ્સ પ્રદાન કરો.
- ટાઇમઝોન અને તારીખો: તારીખો અને સમય સાથે કામ કરતી વખતે, યોગ્ય ટાઇમઝોન અને તારીખ ફોર્મેટનો ઉપયોગ કરો જેથી ડિફૉલ્ટ વેલ્યુ વિવિધ પ્રદેશોમાં વપરાશકર્તાઓને યોગ્ય રીતે પ્રદર્શિત થાય.
ઉદાહરણ: નલિશ કોલેસિંગ સાથે સ્થાનિકીકરણ
માની લો કે તમે વપરાશકર્તાના લોકેલના આધારે વિવિધ ભાષાઓમાં ડિફૉલ્ટ સ્વાગત સંદેશ પ્રદર્શિત કરવા માંગો છો. જો સ્થાનિકીકૃત સંદેશ ઉપલબ્ધ ન હોય તો ડિફૉલ્ટ સંદેશ પ્રદાન કરવા માટે તમે નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરી શકો છો.
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
અથવા ખાલી સ્ટ્રિંગ જેવી વેલ્યુ સાથે કામ કરતી વખતે. તેની સિન્ટેક્સ, વર્તણૂક અને ઉપયોગના કેસોને સમજીને, તમે સ્વચ્છ, વધુ જાળવી શકાય તેવો કોડ લખી શકો છો જે ડિફૉલ્ટ વેલ્યુ અસાઇનમેન્ટ્સને ચોક્કસપણે હેન્ડલ કરે છે. તમારા પ્રોજેક્ટ્સમાં નલિશ કોલેસિંગ ઓપરેટરનો ઉપયોગ કરતી વખતે બ્રાઉઝર સુસંગતતા, ઓપરેટર પ્રેસિડેન્સ અને વૈશ્વિક વિચારણાઓને ધ્યાનમાં રાખવાનું યાદ રાખો.
આ માર્ગદર્શિકામાં દર્શાવેલ શ્રેષ્ઠ પદ્ધતિઓનું પાલન કરીને, તમે તમારા જાવાસ્ક્રિપ્ટ કોડની ગુણવત્તા અને વિશ્વસનીયતા સુધારવા માટે નલિશ કોલેસિંગ ઓપરેટરનો અસરકારક રીતે લાભ લઈ શકો છો, તેને વધુ મજબૂત અને સમજવામાં સરળ બનાવી શકો છો. તમારા કોડમાં હંમેશા સ્પષ્ટતા અને જાળવણીક્ષમતાને પ્રાધાન્ય આપવાનું યાદ રાખો, અને આ લક્ષ્યોને પ્રાપ્ત કરવા માટે નલિશ કોલેસિંગ ઓપરેટર એક શક્તિશાળી સાધન બની શકે છે.