TypeError: कंसोल पर अवैध मंगलाचरण


129

यदि आप इसे क्रोम कंसोल में चलाते हैं:

console.log.apply(null, [array])

Chrome आपको एक त्रुटि वापस देता है:

// TypeError: Illegal Invocation

क्यों? (OSX के माध्यम से Chrome 15 पर परीक्षण किया गया)

जवाबों:


180

यह उन मामलों में काम नहीं कर सकता है जब निष्पादन संदर्भ कंसोल से किसी अन्य ऑब्जेक्ट में बदल गया है:

यह अपेक्षित है क्योंकि कंसोल.info को उम्मीद है कि इसका "यह" संदर्भ कंसोल होगा, न कि विंडो।

console.info("stuff")
stuff
undefined
console.info.call(this, "stuff")
TypeError: Illegal invocation
console.info.call(console, "stuff")
stuff
undefined

यह व्यवहार अपेक्षित है।

https://bugs.chromium.org/p/chromium/issues/detail?id=48662


25
यदि आपको एक फ़ंक्शन के रूप में उपयोग करने की आवश्यकता है, तो आप कंसोल.info.bind (कंसोल) का उपयोग कर सकते हैं
जॉन विलियम्स

3
तो क्या आप console.info.call(console, "stuff")ES5 का समर्थन करने वाले सभी ब्राउज़रों में उपयोग कर सकते हैं ?
मुलहो जूल

2
एक ही आवेदन के लिए जाता है:console.info.apply(console, arguments)
पीटर

अन्य तर्क जैसे कंसोल.लॉग () और डॉक्यूमेंट.राइटिटेलन () पर लागू होते हैं। इसलिए, कॉल () या लागू () का उपयोग करते समय हमेशा सही निष्पादन संदर्भ प्रदान करें। वैकल्पिक रूप से, @ जॉन् विलियम्स के रूप में बाइंड () का उपयोग करें।
एलन सीएस

1
यह अभी भी IE11 / Edge पर लागू होता है जब DevTools F12 नहीं खुला होता है।
बेनी बोटेमा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.