जब मैं कुछ इस तरह करते हैं:क्या जावास्क्रिप्ट में संचालन के निष्पादन का आदेश हर समय समान होने की गारंटी है?
var x = 5;
console.log( x + (x += 10) ); //(B) LOGS 10, X == 20
console.log( (x += 10) + x ); //(A) LOGS 0, X == 30
(ए) और (बी) के बीच दिए गए मान में अंतर समय यह मूल्यांकन किया जाता हो जाता है पर x
का मूल्य द्वारा समझाया गया है। मैं समझ है कि इस तरह मंच के पीछे कुछ होना चाहिए:
TIME ---->
(A) (x = 5) + (x += 10 = 15) = 20
(B) (x += 10 == 15) + (x == 15) = 30
लेकिन यह केवल सच है अगर और सिर्फ़ अगर x
ही बाएँ-से-सही आदेश है कि यह लिखा गया था में मूल्यांकन किया जाता है।
तो, मैं इस बारे में कुछ प्रश्न हैं,
इस गारंटी सभी जावास्क्रिप्ट कार्यान्वयन के लिए सही हो सकता है?
क्या यह मानक द्वारा इस तरह से परिभाषित किया गया है?
या, क्या यह जावास्क्रिप्ट दुनिया में अपरिभाषित व्यवहार है?
अंत में, एक ही विचार कॉल कार्य करने के लिए लागू किया जा सकता,
var x = 5;
console.log(x += 5, x += 5, x += 5, x += 5); // LOGS 10, 15, 20, 25
उन्होंने यह भी दिखाई देते हैं क्रम में मूल्यांकन किया जाना है, लेकिन वहाँ एक मजबूत गारंटी नहीं है कि यह हमेशा होना चाहिए है?
क्या यह मदद करता है, या आपका प्रश्न विशेष रूप से केवल ऑपरेटर निष्पादन आदेश के बारे में पूछ रहा है? http://stackoverflow.com/questions/14863430/does-javascript-have-undefined-behaviour –
मैं विशेष रूप से गारंटी/अनुमानित निष्पादन आदेश के बारे में पूछ रहा हूं। लेकिन वह एक अच्छा संसाधन था, उन चीजों के बारे में नहीं पता था। धन्यवाद। – almosnow
मेरा मानना है कि इसे किसी भी प्रश्न को साफ़ करना चाहिए https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence – Hogan