दिलचस्प पोस्ट
जावास्क्रिप्ट में एक नया स्थान ऑब्जेक्ट बनाना टोकन आधारित प्रमाणीकरण क्या है? डॉकर डेमन लॉग कहां है? एक ArrayList का उपयोग कर एक ListView जनसंख्या? PHP में स्वचालित छवि प्रारूप पहचान अजगर में कार्य को स्थगित करना मैं अपने आवेदन की मूल प्रक्रिया के पीआईडी ​​कैसे प्राप्त कर सकता हूं कैसाडेटाइप.एएलए के साथ जेपीए @ManyToOne कैसे एक उदाहरण initializer एक निर्माता से अलग है? वेबव्यू संसाधन अनुरोधों में कस्टम शीर्षलेख जोड़ें – एंड्रॉइड nth-child क्लास का जवाब नहीं देता क्या @ एचटीएमएल है। डिसप्लेफॉर सिंटैक्स के लिए? दशमलव, फ्लोट और डबल में अंतर। नेट? फाइल अपलोड करने के लिए एमवीसी में अजाक्स। बेनिफॉर्म वास्तव में एक PHP सत्र को नष्ट कर दिया?

जांचें कि क्या एक चर जावास्क्रिप्ट में एक स्ट्रिंग है

मैं कैसे निर्धारित कर सकता हूं कि क्या एक स्ट्रिंग या जावास्क्रिप्ट में कुछ और है?

वेब के समाधान से एकत्रित समाधान "जांचें कि क्या एक चर जावास्क्रिप्ट में एक स्ट्रिंग है"

आप ऑपरेटर के typeof उपयोग कर सकते हैं:

 var booleanValue = true; var numericalValue = 354; var stringValue = "This is a String"; alert(typeof booleanValue) // displays "boolean" alert(typeof numericalValue) // displays "number" alert(typeof stringValue) // displays "string" 

इस वेबपेज से उदाहरण (उदाहरण थोड़ा हालांकि संशोधित किया गया था)।

typeof ऑपरेटर के लिए यहां संदर्भ है।

यह मेरे लिए क्या काम करता है:

 if (typeof myVar === 'string' || myVar instanceof String) // it's a string else // it's something else 

मैं jQuery या lodash / अंडरस्कोर से निर्मित फ़ंक्शंस का उपयोग करने की सलाह देता हूं। वे पढ़ने में आसान और उपयोग करने में आसान होते हैं

या तो फ़ंक्शन केस ड्रेक्स को उल्लेखित करेगा … यह है कि वे दोनों जांच करते हैं कि (ए) चर एक स्ट्रिंग का शाब्दिक है या (बी) यह स्ट्रिंग ऑब्जेक्ट का एक उदाहरण है। या तो मामले में, ये फ़ंक्शन सही तरीके से एक स्ट्रिंग के रूप में मान की पहचान करते हैं।

रद्दी / अंडरस्कोर.जेएस

 if(_.isString(myVar)) //it's a string else //it's something else 

jQuery

 if($.type(myVar) === "string") //it's a string else //it's something else 

अधिक विवरणों के लिए _.isString () के लिए तराशे दस्तावेज देखें।

अधिक जानकारी के लिए $। प्रकार () के लिए jQuery का दस्तावेज़ीकरण देखें।

चूंकि 580+ लोगों ने गलत उत्तर के लिए मतदान किया है, और 800+ ने एक कामकाजी लेकिन शॉटगन-शैली के उत्तर के लिए मतदान किया है, मैंने सोचा कि मेरे जवाब को एक सरल रूप में दोबारा शुरू करना चाहिए, जो कि सभी समझ सकते हैं।

 function isString(x) { return Object.prototype.toString.call(x) === "[object String]" } 

या, इनलाइन (मेरे पास इसके लिए एक UltiSnip सेटअप है):

 Object.prototype.toString.call(myVar) === "[object String]" 

एफवाईआई, पाब्लो सांता क्रूज़ का जवाब गलत है, क्योंकि typeof new String("string") object

DRAX का उत्तर सटीक और कार्यात्मक है, और सही उत्तर होना चाहिए (चूंकि पाब्लो सांता क्रूज़ निश्चित रूप से गलत है, और मैं लोकप्रिय वोट के खिलाफ बहस नहीं करेगा।)

हालांकि, यह उत्तर निश्चित रूप से सही है, और वास्तव में सबसे अच्छा जवाब (छोड़कर, शायद, रद्दी / अंडरस्कोर का उपयोग करने के सुझाव के लिए)। अस्वीकरण: मैंने लॉन्श 4 कोडबेस में योगदान दिया।

मेरा मूल उत्तर (जो स्पष्ट रूप से बहुत सारे सिर पर उड़ गया) निम्नानुसार है:

मैं इसे अंडरस्कोर। जे से ट्रांसकोड कर दिया था:

 ['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp'].forEach( function(name) { window['is' + name] = function(obj) { return toString.call(obj) == '[object ' + name + ']'; }; }); 

यह isString, isNumber, आदि को परिभाषित करेगा

पुनश्च। अगर कोई गैर-ब्राउज़र संदर्भों (उदा। नोड। जेएस) में काम करने के लिए लिख सकता है?

 function isString (obj) { return (Object.prototype.toString.call(obj) === '[object String]'); } 

मैंने देखा कि यहां:

http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/

आप यह खुला स्रोत पुन: प्रयोज्य है-स्ट्रिंग घटक का उपयोग कर सकते हैं यह देखने के लिए कि कोई var स्ट्रिंग है, जबकि इसे कॉपी-चिपकाने से बचने

उदाहरण:

  isString(3) // => false isString('') // => true 

इसके अलावा, isString जेएस में isString कैसे लागू किया गया है:

 function isString(value) {return typeof value === 'string';} 

सबसे अच्छा तरीका:

 var s = 'String'; var a = [1,2,3]; var o = {key: 'val'}; (s.constructor === String) && console.log('its a string'); (a.constructor === Array) && console.log('its an array'); (o.constructor === Object) && console.log('its an object'); (o.constructor === Number || s.constructor === Boolean) && console.log('this won\'t run'); 

इनमें से प्रत्येक का निर्माण इसके उचित वर्ग समारोह द्वारा किया गया है, जैसे "नया ऑब्जेक्ट ()" आदि।

इसके अलावा, बतख-टाइपिंग: "यदि यह एक बतख की तरह लग रहा है, एक बतख की तरह चलता है, और बतख की तरह बदबू आती है – यह एक सरणी होना चाहिए" जिसका मतलब है, उसके गुणों की जांच करें

उम्मीद है की यह मदद करेगा।

संपादित करें; 2016/12/05

याद रखें, आप हमेशा भी संयोजनों के संयोजन का उपयोग कर सकते हैं Typeof के साथ कार्रवाई का एक इनलाइन मानचित्र का उपयोग करने का एक उदाहरण यहां है:

 var type = { 'number': Math.sqrt.bind(Math), ... }[ typeof datum ]; 

इनलाइन-मानचित्रों का उपयोग करने का एक और 'वास्तविक दुनिया' उदाहरण है:

 function is(datum) { var isnt = !{ null: true, undefined: true, '': true, false: false, 0: false }[ datum ]; return !isnt; } console.log( is(0), is(false), is(undefined), ... ); // >> true true false 

यह फ़ंक्शन [कस्टम] "टाइप-कास्टिंग" का उपयोग करेगा – बल्कि, "प्रकार – / – मान-मैपिंग" – यह पता लगाने के लिए कि वास्तव में एक चर "मौजूद" है अब आप null और 0 बीच उस गंदे बाल को विभाजित कर सकते हैं!

कई बार आप इसके प्रकार की परवाह नहीं करते हैं टंकण पर रोक लगाने का एक और तरीका बतख-प्रकार के सेटों का संयोजन कर रहा है:

 this.id = "998"; // use a number or a string-equivalent function get(id) { if (!id || !id.toString) return; if (id.toString() === this.id.toString()) http( id || +this.id ); // if (+id === +this.id) ...; } 

दोनों Number.prototype और String.prototype में एक .toString() method । आपने अभी सुनिश्चित किया है कि स्ट्रिंग-समतुल्य संख्या समान थी, और फिर आपने सुनिश्चित किया है कि आप इसे एक Number रूप में http फ़ंक्शन में पास कर चुके हैं। दूसरे शब्दों में, हमने इसकी परवाह भी नहीं की , इसके प्रकार क्या था

उम्मीद है कि आप के साथ काम करने के लिए और अधिक देता है 🙂

एक सरल समाधान होगा:

 var x = "hello" if(x === x.toString(){ // it's a string }else{ // it isn't } 

रद्दी से लिया गया:

 function isString(val) { return typeof val === 'string' || ((!!val && typeof val === 'object') && Object.prototype.toString.call(val) === '[object String]'); } console.log(isString('hello world!')); // true console.log(isString(new String('hello world'))); // true 

यदि आप नोड.जेएस पर्यावरण पर काम करते हैं, तो आप उपयोग में आसानी से उपयोग कर सकते हैं।

 const util = require('util'); if (util.isString(myVar)) {} 

संपादित करें: @ जेह ने उल्लेखित के रूप में, इसे v4 के बाद से पदावनत किया गया है।

मैंने यह भी पाया कि यह भी ठीक काम करता है, और इसके अन्य उदाहरणों की तुलना में बहुत कम है

 if (myVar === myVar + '') { //its string } else { //its something else } 

रिक्त उद्धरणों पर सम्मिलित करके यह मान को स्ट्रिंग में बदल देता है। यदि myVar पहले से ही एक स्ट्रिंग है तो अगर कथन सफल है

 var a = new String('') var b = '' var c = [] function isString(x) { return x !== null && x !== undefined && x.constructor === String } console.log(isString(a)) console.log(isString(b)) console.log(isString(c)) 

@ ड्रेक्स के उत्तर पर विस्तार करने के लिए, मैं यह करना चाहता हूं:

 function isWhitespaceEmptyString(str) { //RETURN: // = 'true' if 'str' is empty string, null, undefined, or consists of white-spaces only return str ? !(/\S/.test(str)) : (str === "" || str === null || str === undefined); } 

यह null और undefined प्रकारों के लिए भी खाता होगा, और यह गैर-स्ट्रिंग प्रकारों का ध्यान रखेगा, जैसे 0

सभी प्रकार की चर जांचने के लिए पूर्ण उपयोगिता फ़ाइल

यह पूरा समाधान है , जो न केवल आपको यह पता लगाने के लिए मूलभूत उपयोग देता है कि मान स्ट्रिंग ऑब्जेक्ट या कुछ और है प्लस कुछ अन्य अच्छे के लिए कार्य है

इस कच्चे फ़ाइल का उपयोग मेरे इस सरल प्रतिक्रिया redux प्रोजेक्ट में github सरल प्रतिक्रिया redux पर किया जाता है

 var Sys = { /** This Returns Object Type */ getType: function(val){ return Object.prototype.toString.call(val); }, /** This Checks and Return if Object is Defined */ isDefined: function(val){ return val !== void 0 || typeof val !== 'undefined'; } /** Run a Map on an Array **/ map: function(arr,fn){ var res = [], i=0; for( ; i<arr.length; ++i){ res.push(fn(arr[i], i)); } arr = null; return res; }, /** Checks and Return if the prop is Objects own Property */ hasOwnProp: function(obj, val){ return Object.prototype.hasOwnProperty.call(obj, val); }, /** Extend properties from extending Object to initial Object */ extend: function(newObj, oldObj){ for(var prop in oldObj){ if(hasOwnProp(oldObj, prop)){ newObj[prop] = oldObj[prop]; } } return newObj; } } ['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Object', 'Array'].forEach( function(name) { Sys['is' + name] = function(obj) { return toString.call(obj) == '[object ' + name + ']'; }; }); 

उपरोक्त कोड एक ऑब्जेक्ट सिज़ाइल बनायेगा {{} इस पद्धति में सभी कार्य हैं जैसे getType, isDefined इनका प्रयोग करने के लिए बस इस विधि को इस तरह से कॉल करें।

 if(Sys.isDefined(myVar)){ console.log('myVar is defined'); }else { console.log('no myVar is not defined.');} //Similar to this var myStr = 'You are awesome.. !!'; if(Sys.isString(myStr)){console.log(myStr);} 

यह एक साधारण चाल है "चारएट का प्रयोग"

 var string1 = "hello world"; var string2 = String("hello world"); var string3 = new String("hello world"); (string1.charAt && string2.charAt && string3.charAt) && true == true //true ((1).charAt || ({}).charAt || ([]).charAt ) || false == true // false 

आप हर स्ट्रिंग प्रारूप में चार प्रयोग कर सकते हैं और अन्य झूठे हैं। लेकिन शून्य त्रुटियों का कारण बनता है

मुझे यकीन नहीं है कि यदि आप जानते हैं कि यह किसी प्रकार की string चाहे इसकी सामग्री की परवाह किए बिना, या इसकी सामग्री एक संख्या या स्ट्रिंग है, इसके प्रकार की परवाह किए बिना

तो यह जानने के लिए कि इसका प्रकार एक स्ट्रिंग है, पहले से ही उत्तर दिया गया है।
लेकिन इसकी सामग्री के आधार पर जानने के लिए यदि यह एक स्ट्रिंग या एक नंबर है, तो मैं इसका उपयोग करेगा:

 function isNumber(item) { return (parseInt(item) + '') === item; } 

और कुछ उदाहरणों के लिए:

 isNumber(123); //true isNumber('123'); //true isNumber('123a');//false isNumber(''); //false 

मैं इस सरल समाधान का उपयोग करना चाहता हूं:

 var myString = "test"; if(myString.constructor === String) { //It's a string }