Que pensez-vous lorsque vous voyez ce sujet ? C'est très simple. Tapez et déterminez ensuite la longueur.
if(typeof unknownVariable ==='string' && unknownVariable.length){ ... }
L'avez-vous fait ?
Et si cette chaîne est créée à l'aide de new String() ? La variable inconnue typeof doit être un objet. que feriez-vous?
Vous devez absolument déterminer le type en premier, typeof unknownVariable==='object' ? Mais il faut penser qu'il existe aussi une variable nulle dont le type de valeur est également objet. Devons-nous utiliser && unknownVariable ? Maintenant, c'est un objet non vide. Devons-nous vérifier la longueur? Cela ne devrait pas être nécessaire. Mais au final, l'objet typeof n'est pas nécessairement un objet chaîne, il peut s'agir d'autres objets, comme des tableaux, des objets json, d'autres objets dérivés de new, etc. Ce qu'il faut faire?
Il s'agit d'une méthode rarement utilisée mais utile : valueOf. valueOf affichera le type d'origine de la variable.
let str1="test" let str2=new String('test2') let arr1=[1,2,3] let fn1=function(){ console.log('this is a function') } let obj1={ name:'gpd' } let obj2=new Object() obj2.name='gpd' str1.valueOf() // "test" str2.valueOf() //"test2" arr1.valueOf() //[1,2,3] fn1.valueOf() //fn1(){} obj1.valueOf() // {name:"gpd"} obj2.valueOf() // {name:"gpd"}
Ainsi, que vous soyez une chaîne littérale ou un objet chaîne obtenu par new String, sa valeur valueOf est une chaîne littérale. Ensuite, ses types de valeurs sont tous des chaînes .
Le jugement final est donc
if(typeof unknownVariable !=undefined && unknownVariable && typeof unknowVariable.valueOf() === "string") { ... }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!