मैं अपने सिर को चारों ओर लपेटने की कोशिश कर रहा हूं कि निम्नलिखित कोड परिणाम स्टैक ओवरफ़्लो में क्यों होते हैं जब कोष्ठक शामिल होते हैं, लेकिन जब वे छोड़े जाते हैं तो नहीं।किसी फ़ंक्शन को तर्क के रूप में पास करते समय मुझे ब्रांड्स को क्यों छोड़ना होगा?
मैं फ़ंक्शन को सेटटाइमआउट के लिए एक तर्क के रूप में बुला रहा हूं और यह बिना किसी पैराथेस के काम करता है, लेकिन निश्चित रूप से विफल रहता है जब मैं उन्हें जोड़ता हूं। यह समारोह के बाद() जोड़ने के लिए मेरा अंतर्ज्ञान था। बस उम्मीद है कि कोई मेरे लिए इसे साफ़ कर सकता है। परान वैकल्पिक कब हैं?
मामला 1:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo(), 2000)
}
// RangeError: Maximum call stack size exceeded
केस 2:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo, 2000)
}
// parens are omitted on foo function and it works.
शायद एक डुप्लिकेट। इससे मदद मिलनी चाहिए: http://stackoverflow.com/questions/5520155/settimeout-callback-argument/5520190#5520190 –
आपको बहुत धन्यवाद lwburk, उस लिंक में आपकी व्याख्या ने मेरे लिए चीजों को मंजूरी दे दी है। –