1,判断非空字符串字面值。
var str = "aa";(var str = ""; var str = 1.5)
if (typeof str === 'string' && str.length > 0)
2,判断字符串为非空(字符串字面值或者字符串对象)。
if ((typeof str != 'undefined' && str) && (typeof str.valueof(str) == 'string') && str.length > 0)
解释:
1,str需要定义。
2,var str = null; 则不满足条件。需要检查不为null。
3,str.valueof(str),无论str是字面字符串还是对象字符串,都是string.并且可以用严格等(===)。
4,字面字符串,对象字符串都有length属性。Array也有。数字没有。(如果访问字面字符串的length属性时,会创建一个新的String对象,并设置对应值。访问length属性后,丢弃新创建的String对象)。
基础知识:
1,JavaScript中,要判断数据,首先得知道输入的是什么类型,typeof去判断。
2,得知道有什么类型(number,string,boolean,function,object,undefined)。
3,object包括,null,Array,其他JavaScript对象。
4,str.valueof(str),无论str是字面字符串还是对象字符串,都是string.并且可以用严格等(===)。也就是说valueof()将返回一个字符串字面值。
5,先判断类型,在判断其属性(length,或者其他属性)。
6,严格等与松散等。(=== ==)与 (!== !=)基本类型与对象之间的关系。比如操作字符串时,只关心基本类型值,不管你是对象字符串还是字面字符串,松散等。结论:对基本类型值感兴趣,松散等;对对象类型强制一致,严格等。也可以这样理解,松散等不关心你是字面还是对象,只关心基本类型的值;严格等,多了一层,要先是同类型,在相等。比如都是object,然后判断是是否等;根据具体情况,选择需要松散等还是严格等,并说清楚为什么这么写?
7,根据语言特性,想办法缩短测试。比如我只找满足条件(正面或反面)。