ડિક્લેરેશન એ નામકરણ કરેલ ફંક્શન સ્ટેટમેન્ટ છે; એક્સપ્રેશન ફંક્શનને વેરિયેબલને સોંપે છે. વ્યવહારિક તફાવત hoisting છે.
js
();
() { ; }
();
expressed = () { ; };
ડિક્લેરેશન એ નામકરણ કરેલ ફંક્શન સ્ટેટમેન્ટ છે; એક્સપ્રેશન ફંક્શનને વેરિયેબલને સોંપે છે. વ્યવહારિક તફાવત hoisting છે.
();
() { ; }
();
expressed = () { ; };
ફંક્શન ડિક્લેરેશનો તેમના શરીર સાથે hoisted થાય છે, તેથી આખો ફંક્શન એક્સેક્યુશન તેના પર પહોંચે તે પહેલાં અસ્તિત્વમાં છે. ફંક્શન એક્સપ્રેશન માત્ર એક મૂલ્ય છે જે વેરિયેબલને સોંપવામાં આવ્યો છે — અર્લી કોલના બિંદુ પર, expressed હજુ undefined છે (var સાથે) અથવા TDZ માં છે (let/const સાથે).
// expression — for callbacks, conditional definitions, arrow functions
const handler = () => doThing();
const fn = condition ? a : b;
arr.map(x => x * 2);
// declaration — clear, hoisted top-level functions
function calculateTotal(items) { ... }
ડિક્લેરેશનો ટોપ-લેવલ નામકરણ કરેલ ફંક્શનો માટે સારી રીતે વાંચાય છે અને hoisting ના લાભ લે છે (તમે તેમને તેમના ઉપયોગ પછી વ્યાખ્યાયિત કરી શકો છો). એક્સપ્રેશનો એરો ફંક્શન, callbacks, IIFEs અને શરતી રીતે ફંક્શનો સોંપવા માટે જરૂરી છે। એરો ફંક્શનો હંમેશા એક્સપ્રેશનો હોય છે.