Javascript检查一个存在的、非空的字符串

2016-12-26  本文已影响0人  诺亚的雎鸠

验证一个变量已经定义,并且是一个不为空的字符串


最简单的解决办法是:

if(typeof unknownVariable === 'string' 
&& unknownVariable.length > 0)
...

这种做法吧字符串测试和长度测试组合起来,确保了变量是一个长度大于0的字符串,但这只能检查变量是字符串字面量,当检测变量是一个字符串对象

let str = new String('test');

那么strtypeofobject,所以我们需要重新考虑。


if(typeof unknownVariable != 'undefined')
...
if(typeof unknownVariable != 'undefined' 
&& unknownVariable )
...
if((typeof unknownVariable != 'undefined' 
&& unknownVariable ) 
&& unknownVariable.length > 0)
...

但是Array对象也存在length,我们需要确保测试变量不是一个数组,这需要借助一个对象方法valueOf(),这个方法所有JavaScript对象都可以使用。
如果变量是一个String对象,valueOf()返回字符串字面值,如果变量已经是一个字符串字面值,则valueOf()方法返回的是string字符串(valueOf()方法临时将字面值包装到一个String对象中),所以测试方法是:

if(((typeof unknownVariable != 'undefined' 
&& unknownVariable) 
&& unknownVariable.length > 0) 
&& typeof unknownVariable.valueOf() === 'string')
...

所以,判断一个非空已经存在的字符串变量,严格的判断写法为:

if(((typeof unknownVariable != 'undefined' 
&& unknownVariable) 
&& unknownVariable.length > 0) 
&& typeof unknownVariable.valueOf() == 'string')
...
上一篇 下一篇

猜你喜欢

热点阅读