ਇੱਕ ਡਿਕਲੇਰੇਸ਼ਨ ਇੱਕ ਨਾਮਵਾਲੀ ਫੰਕਸ਼ਨ ਸਟੇਟਮੈਂਟ ਹੈ; ਇੱਕ ਐਕਸਪ੍ਰੈਸ਼ਨ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਵੇਰੀਏਬਲ ਨੂੰ ਨਿਯੁਕਤ ਕਰਦਾ ਹੈ। ਵਿਹਾਰਕ ਅੰਤਰ hoisting ਹੈ।
js
();
() { ; }
();
expressed = () { ; };
ਇੱਕ ਡਿਕਲੇਰੇਸ਼ਨ ਇੱਕ ਨਾਮਵਾਲੀ ਫੰਕਸ਼ਨ ਸਟੇਟਮੈਂਟ ਹੈ; ਇੱਕ ਐਕਸਪ੍ਰੈਸ਼ਨ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਵੇਰੀਏਬਲ ਨੂੰ ਨਿਯੁਕਤ ਕਰਦਾ ਹੈ। ਵਿਹਾਰਕ ਅੰਤਰ hoisting ਹੈ।
();
() { ; }
();
expressed = () { ; };
ਫੰਕਸ਼ਨ ਡਿਕਲੇਰੇਸ਼ਨਾਂ ਨੂੰ ਉਹਨਾਂ ਦੀ ਬਾਡੀ ਦੇ ਨਾਲ ਹੋਸਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈ ਪੂਰਾ ਫੰਕਸ਼ਨ ਅਮਲ ਵਿੱਚ ਆਉਣ ਤੋਂ ਪਹਿਲਾ ਮੌਜੂਦ ਹੈ। ਇੱਕ ਫੰਕਸ਼ਨ ਐਕਸਪ੍ਰੈਸ਼ਨ ਸਿਰਫ਼ ਇੱਕ ਮੁੱਲ ਹੈ ਜੋ ਇੱਕ ਵੇਰੀਏਬਲ ਨੂੰ ਨਿਯੁਕਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ — ਜਲਦੀ ਕਾਲ ਦੇ ਪੁਆਇੰਟ ਤੇ، 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 ਤੋਂ ਲਾਭ ਪੁੱਤ ਕਰਦੀਆਂ ਹਨ (ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਉਹਨਾਂ ਦੇ ਵਰਤੋਂ ਦੇ ਬਾਅਦ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹੋ)। ਐਕਸਪ੍ਰੈਸ਼ਨਾਂ ਆਕਾ ਫੰਕਸ਼ਨਾਂ, ਕੌਲਬੈਕ, IIFE, ਅਤੇ ਸ਼ਰਤ ਅਨੁਸਾਰ ਫੰਕਸ਼ਨਾਂ ਦੇ ਨਿਯੋਗ ਲਈ ਜ਼ਰੂਰੀ ਹਨ। ਆਰੋ ਫੰਕਸ਼ਨ ਹਮੇਸ਼ਾ ਐਕਸਪ੍ਰੈਸ਼ਨ ਹਨ।