উত্তর:
আপনি বন্ধ ছিল:
if (typeof a_string === 'string') {
// this is a string
}
সম্পর্কিত নোটে: উপরের চেকটি new String('hello')সেই ধরণের Objectপরিবর্তে টাইপযুক্ত স্ট্রিং তৈরি করা হলে কাজ করবে না । এটি ঘিরে কাজ করার জন্য জটিল সমাধান রয়েছে, তবে কখনও সেভাবে স্ট্রিং তৈরি করা এড়ানো ভাল।
if(typeof(str) === typeof(String()))
typeofঅপারেটর একটি পোতা (তাই আপনার উদাহরণস্বরূপ LHS অর্থে দেখা যায় না) নয়।
আপনার এটির মতো ব্যবহার করা দরকার ...
if (typeof a_string == 'string') {
// This is a string.
}
মনে রাখবেন, typeofএকটি অপারেটর, কোনও ফাংশন নয়। typeof(var)তবুও , আপনি বন্যটিতে প্রচুর ব্যবহৃত হতে দেখবেন । এটি যতটা বোঝায় var a = 4 + (1)।
এছাড়াও, আপনি পাশাপাশি ==(সমতা তুলনা অপারেটর) ব্যবহার করতে পারেন যেহেতু উভয় অপারেশন Stringগুলি ( typeof সর্বদা একটি প্রদান করে String), জাভাস্ক্রিপ্টটি আমি ব্যবহার করা একই পদক্ষেপগুলি সম্পাদন করতে সংজ্ঞায়িত করা হয়েছে ===(কঠোর তুলনা অপারেটর)।
Box9 উল্লেখ হিসাবে , এটি তাত্ক্ষণিকভাবে কোনও বস্তু সনাক্ত করবে নাString ।
আপনি এটির সাথে এটি সনাক্ত করতে পারেন ....
var isString = str instanceof String;
jsFizz ।
... অথবা ...
var isString = str.constructor == String;
jsFizz ।
তবে এটি একাধিক windowপরিবেশে (ভাবেন না) কাজ করবে না iframe।
আপনি এর সাথে এটি পেতে পারেন ...
var isString = Object.prototype.toString.call(str) == '[object String]';
jsFizz ।
তবে আবার, ( বক্স 9 হিসাবে উল্লেখ করা হয়েছে ), আপনি কেবল আক্ষরিক Stringবিন্যাস ব্যবহার করে আরও ভাল var str = 'I am a string';।
আরও পড়া ।
if(myVar.toUpperCase) alert('I am a string');? দেখুন: jsfiddle.net/tb3t4nsx
{ toUpperCase: '' }
নিম্নলিখিত এক্সপ্রেশন সত্য ফিরে :
'qwe'.constructor === String
নিম্নলিখিত এক্সপ্রেশন সত্য ফিরে :
typeof 'qwe' === 'string'
নিম্নলিখিত প্রকাশটি মিথ্যা (sic!) ফেরায়:
typeof new String('qwe') === 'string'
নিম্নলিখিত এক্সপ্রেশন সত্য ফিরে :
typeof new String('qwe').valueOf() === 'string'
সেরা এবং সঠিক উপায় ( imho ):
if (someVariable.constructor === String) {
...
}
এখনকার দিনগুলিতে আমি বিশ্বাস করি যে টাইপ অফ () এর কোনও ফাংশন ফর্ম ব্যবহার করা বেশি পছন্দ ...
if(filename === undefined || typeof(filename) !== "string" || filename === "") {
console.log("no filename aborted.");
return;
}
typeof, আপনি কেবলমাত্র সেই প্রথম বন্ধনীগুলি দিয়ে ক্রিয়াকলাপ পরিচালনা করছেন। কিছু লোক এটি নির্দিষ্ট পরিস্থিতিতে আরও পাঠযোগ্য বলে মনে করতে পারে।
filenameকেবল একটি বিবৃতিকে গোষ্ঠীবদ্ধ করে এবং তাই অকেজো এবং বহিরাগত। এই উত্তরের 0 টি স্কোর থাকা ভাল জিনিস কারণ এটি ভুল, বিভ্রান্তিমূলক এবং অসহায়; এটির নেতিবাচক স্কোর থাকলে এটি আরও ভাল।
a_string সমস্ত ক্ষেত্রে নাল বা অপরিজ্ঞাত জন্য পরীক্ষা করুন
if (a_string && typeof a_string === 'string') {
// this is a string and it is not null or undefined.
}
typeof nullএবং typeof undefinedকখনই ফিরে আসবে না 'string', তাই typeof a_stringযথেষ্ট। নেক্রোপোস্টিংয়ের জন্য দুঃখিত
আমার ব্যক্তিগত দৃষ্টিভঙ্গি, যা সমস্ত ক্ষেত্রে কাজ করে বলে মনে হচ্ছে, সদস্যদের উপস্থিতির জন্য যাচাই করা হচ্ছে যা কেবলমাত্র স্ট্রিংয়ের জন্য উপস্থিত থাকবে।
function isString(x) {
return (typeof x == 'string' || typeof x == 'object' && x.toUpperCase && x.substr && x.charAt && x.trim && x.replace ? true : false);
}
দেখুন: http://jsfiddle.net/x75uy0o6/
আমি জানতে চাই যে এই পদ্ধতির ত্রুটি রয়েছে কিনা তবে এটি বছরের পর বছর ধরে আমাকে ভালভাবে চালিয়েছে।