2012-07-20 16 views
6

में अपेक्षित व्यवहार के रूप में व्यवहार नहीं कर रहा है, मैं यह जांचना चाहता था कि एक ऐप स्क्रिप्ट में एक चर स्ट्रिंग था या नहीं, लेकिन पाया कि जब वेरिएबल वास्तव में एक स्ट्रिंग था तो आवृत्ति सही नहीं हो रही थी। निम्न परीक्षण:उदाहरण स्ट्रिंग Google Apps स्क्रिप्ट

"a" is not a String 
String("b") is not a String 

डॉक्स हालांकि जाहिरा तौर पर instanceof एक वैध ऑपरेटर है और स्ट्रिंग एक मान्य है, कि समर्थित है ECMAScript के सबसेट पर स्पष्ट नहीं हैं:

function test_instanceof() { 
    var a = "a"; 
    Logger.log('"a" is ' + ((a instanceof String) ? '' : 'not ') + 'a String'); 
    var b = String("b"); 
    Logger.log('String("b") is ' + ((b instanceof String) ? '' : 'not ') + 'a String'); 
} 

इन दो संदेशों का लॉग इस तथ्य से निर्णय लें कि कोड अपवाद के बिना निष्पादित किया गया है।

एक चर के प्रकार को जांचने का उचित तरीका क्या है?

उत्तर

7

यह मानक ECMAScript 3.

आपका कोड क्या कर रहा है क्या जावास्क्रिप्ट उम्मीद है: equivalent JavaScript running in your browser के लिए यहाँ देखें।

प्रोटोटाइप श्रृंखला में एक मिलान करने वाले कन्स्ट्रक्टर के लिए तत्काल जांच। यह 'नए' के ​​माध्यम से बनाई गई वस्तुओं के लिए अच्छा है लेकिन तारों के लिए बहुत उपयोगी नहीं है। स्ट्रिंग के लिए आप वास्तव में क्या चाहते हैं, जैसा कि this example in your browser या समकक्ष ऐप्स स्क्रिप्ट कोड में दिखाया गया है:

function test_instanceof() { 
    var a = "a"; 
    Logger.log('"a" is ' + ((typeof a == 'string') ? '' : 'not ') + 'a String'); 
    var b = String("b"); 
    Logger.log('String("b") is ' + ((typeof b == 'string') ? '' : 'not ') + 'a String'); 
} 
+0

दोह! मैं हाल ही में पाइथन लिखने में बहुत अधिक समय व्यतीत कर रहा हूं, और जावास्क्रिप्ट के इस विवरण को भूल गया हूं। रिफ्रेशर के लिए धन्यवाद। –

संबंधित मुद्दे