JavaScript判断字符串非空的严格写法

       最近在阅读O'REILLY系列的《JavaScript经典实例》,里面第一张在讲String相关操作时提到一种严格判断String非空的写法,觉得很有意思,就纪录在此。

问题:想要检查一个已经定义了的变量,是一个字符串,并且它不为空。

解决:使用typeof运算符、通过valueOf方法(这都是JavaScript对象共享的)以及stringlength属性来创建一个条件测试,以确保一个变量是存在的,是一个字符串,并且不为空:

JavaScript判断字符串非空的严格写法_第1张图片

思考:可能String最重要的内建属性是length。我们可以使用length来了解字符串的长度信息,并且测试字符串变量是否是一个空字符串(长度为0):

JavaScript判断字符串非空的严格写法_第2张图片

然而,当使用字符串的时候并不确定它们是否存在的时候,你是不能检查其长度的,因为如果还没设置该变量的话,将会得到一个未定义的JS错误,必须把长度检测和另一项存在性测试组合起来,此时,就需要了解一下typeof运算符。

typeof运算符返回对象类型:

JavaScript判断字符串非空的严格写法_第3张图片


最后一个值现在对我们就有意义,因为,一个没有定义的变量拥有undefined数据类型。

valueOf方法对于所有的javascript对象都可用,并且不管对象是什么,都返回其基本值:对于Number、String和布尔类型,也就是它们的原始值;对于函数,是函数文本;以此类推。因此,如果该变量是一个String对象,valueOf返回值是一个字符串直接量。如果该字符串已经是一个字符串直接量,其对应的valueOf方法将会临时性的将它封装为一个String对象,这意味着,valueOf返回值依然是一个字符串直接量。

你可能感兴趣的:(JavaScript)