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

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


最简单的解决办法是:

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

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

let str = new String('test');

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


  • 首先,确保变量不是未定义:
if(typeof unknownVariable != 'undefined')
...
  • 然后我们需要确保变量不为null,因为null变量的typeofobject
if(typeof unknownVariable != 'undefined' 
&& unknownVariable )
...
  • 非空判断使用length:
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')
...
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容