जावास्क्रिप्ट में, यदि आप किसी असाइनमेंट अभिव्यक्ति के बाईं ओर किसी प्रकार की अभिव्यक्ति डालते हैं, तो इंजन एक संदर्भ त्रुटि फेंक देगा। उदाहरण के लिए,क्या जावास्क्रिप्ट में एल-वैल्यू और आर-वैल्यू की अवधारणा है?
// 'this' on the left side
this = window; // ReferenceError: Invalid left-hand side in assignment
या
// function call expression on the left side
var a;
var fn = function() {return a};
a === fn(); // true
a = 1; // 1
fn() = 5; // ReferenceError: Invalid left-hand side in assignment
या
var a;
a = 1; // 1
(a) = 2; // 2
(1, a) = 3; // ReferenceError: Invalid left-hand side in assignment
मेरे प्रश्न हैं:
करता जावास्क्रिप्ट भी एल-मूल्य और R- की अवधारणा है सी के रूप में मूल्य?
असाइनमेंट अभिव्यक्ति के बाईं ओर फ़ंक्शन कॉल अभिव्यक्ति क्यों नहीं दिखाई दे सकती है? उपर्युक्त उदाहरण में,
a === fn()
के बाद,a = 5
औरfn() = 5
के बीच क्या अंतर है। मुझे पता है कि ES5 spec यह जरूरी है, लेकिन यह इस तरह क्यों डिजाइन किया गया है?
'fn()' एक अभिव्यक्ति है और एक चर संदर्भ नहीं है, और आप उस पर कुछ भी असाइन नहीं कर सकते हैं। –
लेकिन मूल्यांकन आदेश बाएं से दाएं है, अगर 'एफएन()' का मूल्यांकन पहले किया जाता है, तो यह 'f'() === a' के बाद से 'ए' वापस कर देगा। और 'ए' एक चर है और मूल्यों को स्टोर कर सकता है। –
यह वैरिएबल के संदर्भ में नहीं है, –