સ્થાનિક વિરુદ્ધ ગ્લોબલ જાવાસ્ક્રિપ્ટ ચલોને સમજવું

પોલ મેકફેડ્રીઝ દ્વારા

ફંક્શનની બહાર જાહેર કરાયેલા જાવાસ્ક્રિપ્ટ વેરીએબલ્સ અને ફંક્શનની અંદર જાહેર કરાયેલા વચ્ચે મોટો તફાવત છે. નીચેની માહિતી આ નિર્ણાયક તફાવતને સમજાવે છે.



પ્રોગ્રામિંગમાં, આ અવકાશ ચલની વ્યાખ્યા કરે છે જ્યાં સ્ક્રિપ્ટમાં ચલનો ઉપયોગ કરી શકાય છે અને તેનો ઉપયોગ ક્યાં થઈ શકતો નથી. તેને બીજી રીતે કહીએ તો, ચલનો અવકાશ નક્કી કરે છે કે ચલ સાથે કયા નિવેદનો અને વિધેયો accessક્સેસ કરી શકે છે અને કાર્ય કરી શકે છે. તમારે અવકાશ સાથે સંબંધિત બે મુખ્ય કારણો છે:



ફ્લોમેક્સ લેવા માટે દિવસનો શ્રેષ્ઠ સમય
  • તમે બહુવિધ કાર્યોમાં સમાન ચલ નામનો ઉપયોગ કરવા માંગો છો. જો આ ચલો અન્યથા અસંબંધિત હોય, તો તમે ખાતરી કરવા માંગો છો કે તમે કયા ચલ સાથે કામ કરી રહ્યા છો તે અંગે કોઈ મૂંઝવણ નથી. બીજા શબ્દોમાં કહીએ તો, તમે જે તે ઘોષણા કરી છે તેમાં દરેક ચલનો અવકાશ મર્યાદિત કરવા માંગો છો.
  • તમારે બહુવિધ કાર્યોમાં સમાન ચલનો ઉપયોગ કરવાની જરૂર પડી શકે છે. ઉદાહરણ તરીકે, તમારું કાર્ય ગણતરીના પરિણામો સંગ્રહિત કરવા માટે એક ચલનો ઉપયોગ કરી શકે છે, અને અન્ય કાર્યોમાં પણ તે પરિણામનો ઉપયોગ કરવાની જરૂર પડી શકે છે. આ કિસ્સામાં, તમે ચલનો અવકાશ સેટ કરવા માંગો છો જેથી તે બહુવિધ કાર્યોમાં toક્સેસિબલ હોય.

જાવાસ્ક્રિપ્ટ તમને તમારા ચલો માટે બે પ્રકારનો અવકાશ સ્થાપિત કરવા દે છે:

  • સ્થાનિક (અથવા કાર્ય-સ્તર) અવકાશ
  • વૈશ્વિક (અથવા પૃષ્ઠ-સ્તર) અવકાશ

જાવાસ્ક્રિપ્ટમાં સ્થાનિક અવકાશ સાથે કામ કરવું

જ્યારે કોઈ ચલ હોય સ્થાનિક અવકાશ, તેનો અર્થ એ કે ચલ એક ફંક્શનની અંદર ઘોષિત કરવામાં આવ્યું હતું અને માત્ર એક જ સ્ટેટમેન્ટ કે જે વેરીએબલને એક્સેસ કરી શકે છે તે જ ફંક્શનમાં છે. (તેથી જ સ્થાનિક અવકાશ પણ તરીકે ઓળખાય છે કાર્ય-સ્તર અવકાશ.) ફંક્શનની બહારનાં નિવેદનો અને અન્ય કાર્યોમાંનાં નિવેદનો, સ્થાનિક ચલને canક્સેસ કરી શકતા નથી.



આને દર્શાવવા માટે, નીચેના કોડનો વિચાર કરો:

A()

B() નામવાળી અહીં બે કાર્યો છે અને A(). કાર્ય myMessage console.log() નામના ચલની ઘોષણા કરે છે, તેની કિંમતને ટેક્સ્ટ શબ્દમાળા પર સુયોજિત કરે છે, અને જાવાસ્ક્રિપ્ટના B() નો ઉપયોગ કરે છે. કન્સોલમાં શબ્દમાળા દર્શાવવા માટેની પદ્ધતિ.

કાર્ય console.log() | _ _ _ _ | નો ઉપયોગ કરે છે | _ _ _ _ | પ્રદર્શિત કરવાનો પ્રયાસ કરવો ચલ. જો કે, જાવાસ્ક્રિપ્ટ ભૂલ પેદા કરે છે જે કહે છે | _ _ _ _ | કેમ? કારણ કે | _ _ _ _ | ચલ ફક્ત કાર્ય કરવા માટે વિસ્તૃત myMessage; કાર્ય myMessage is not defined myMessage જોઈ શકતા નથી ચલ, તેથી તે પ્રદર્શિત કરવા માટે કંઈ નથી. હકીકતમાં, કાર્ય પછી A() એક્ઝેક્યુટ કરવાનું સમાપ્ત કરે છે, જાવાસ્ક્રિપ્ટ | B() દૂર કરે છે સંપૂર્ણપણે મેમરીમાંથી ચલ, તેથી જ | _ _ _ _ | ચલ ફંક્શનમાં સંદર્ભિત myMessage અસ્પષ્ટ છે.



myMessage ચલ જાવાસ્ક્રિપ્ટ

| _ _ + _ | પ્રદર્શિત કરવાનો પ્રયાસ કરી રહ્યું છે કાર્યમાં ચલ A() એક ભૂલ પરિણમે છે.

જો તમે | _ _ + _ | નો ઉપયોગ કરવાનો પ્રયાસ કરો તો તે જ પરિણામ આવે છે નીચેના કોડની જેમ કોઈપણ કાર્યની બહારના ચલ:

સ્ટ્રેપ ગળા માટે એન્ટિબાયોટિક
myMessage

// નીચેના નિવેદનમાં ભૂલ પેદા થાય છે:

સુપાર્ટઝ ઇન્જેક્શનની આડઅસરો

કન્સોલ.લોગ (માય મેસેજ);

જાવાસ્ક્રિપ્ટમાં વૈશ્વિક અવકાશ સાથે કામ કરવું

જો તમે સમાન પૃષ્ઠમાં બહુવિધ કાર્યોમાં અથવા મલ્ટીપલ સ્ક્રિપ્ટ બ્લોકમાં પણ સમાન ચલનો ઉપયોગ કરવા માંગતા હોવ તો? તે કિસ્સામાં, તમારે ઉપયોગ કરવાની જરૂર છે વૈશ્વિક અવકાશ, જે પૃષ્ઠ પરનાં કોઈપણ નિવેદનો અથવા વિધેય માટે ચલને ibleક્સેસિબલ બનાવે છે. (તેથી જ વૈશ્વિક અવકાશને પણ કહેવામાં આવે છે પૃષ્ઠ-સ્તર અવકાશ.) વૈશ્વિક અવકાશ સાથે ચલ સેટ કરવા માટે, તેને કોઈપણ કાર્યની બહાર જાહેર કરો. નીચેનો કોડ આને ચક્કર આપે છે:

myMessage

| _ _ + _ | જાહેર કરીને સ્ક્રિપ્ટ શરૂ થાય છે વેરીએબલ અને તેને સ્ટ્રિંગ લિટરલની બરાબર સુયોજિત કરો. પછી | _ _ _ _ | નામનું ફંક્શન બનાવવામાં આવેલ છે અને તે એક કન્સોલ સંદેશ દર્શાવે છે જે | _ _ + _ | ની કિંમત પ્રદર્શિત કરવાનો પ્રયાસ કરે છે. ફંકશન કહેવા પછી, બીજું B() સ્ટેટમેન્ટ | myMessage પ્રદર્શિત કરવાનો પ્રયાસ કરે છે ફંક્શનની બહારનું મૂલ્ય. જેમ તમે જોઈ શકો છો, બંને B() સ્ટેટમેન્ટ્સ | _ _ _ _ | ની કિંમત દર્શાવે છે સમસ્યા વિના.

ગ્લોબલ જાવાસ્ક્રિપ્ટ ચલ

જ્યારે તમે વૈશ્વિક ચલની ઘોષણા કરો છો, ત્યારે તમે ફંકશનની અંદર અને બહાર બંનેના મૂલ્યને .ક્સેસ કરી શકો છો.