点击切换帐号登陆
帐号密码登陆

如何检测存在且非空的字符串

3.检测存在,且非空的字符串
====================

**知识点**
1. typeof操作符
2. length属性
3. valueOf()方法
4. == / ===



------------------------------------------------------

1.typeof操作符
--------------
> 返回变量类型
- 数值: `number`
- 字符串: `string`
- 布尔: `boolean`
- 函数: `function`
- null/数组/对象: `object`
- 未定义: `undefined`

------------------------------------------------------

2.length属性
-----------
- 返回数据的长度
- 适用于*字符串和数组类型*

------------------------------------------------------

3.valueOf()方法
--------------
- 所有对象上均可用
- 返回该对象的基本类型值(未包装过)
- Number/String/Boolean: 返回基本值
- Array/Object/Function: 返回声明字面量

------------------------------------------------------

4.==/===
--------
- `==`: 松散型相等: 仅比较基本类型
- `===`: 严格型相等: 除比较基本类型,还比较包装类型

------------------------------------------------------

### 示例代码: code/demo03.html

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>检查一个存在的非空的字符串</title>
</head>
<body>
<script>
    // 有三个条件:1. 已定义, 2. 字符串, 3. 不为空



    //1. 最简单的非空判断
    var str1; // 等价: var str1 = undefined;

    // if (str1.length > 0) {
    //     console.log('验证通过');
    // } else {
    //     console.log('失败');
    // }
    // 报错,str1变量未定义,
    // 不能检测未定义的变量,所以要将长度检测前必须进行存在性检测

    //2. 先检测是否定义,再检测长度
    // var str2 = 'peter';
    var str2 = 100;  // 100是数字,虽定义,但数字没有length属性,仍能正常工作
    if (typeof str2 !== 'undefined' && str2.length > 0) {
        console.log('验证通过');
    } else {
        console.log('失败');
    }
    // 但是直接用'string'做为检测目标会更直观
    var str3 = 'admin';
    if (typeof str3 === 'string' && str3.length > 0) {
        console.log('验证通过');
    } else {
        console.log('失败');
    }

    //3. 字符串除了用字面量基本值,还可以用new String()创建
    // 应该不管这个字符串是用字面量还是构造器创建,都能正常检测
    // 而这个字符对象的类型不是string, 而是object, 而可以返回object还了对象,还有null和数组

    // var str4 = 'user';
    // var str4 = new String('user');  // 发现仍能正常工作
    // var str4 = 100; // 数值工作也正常
    var str4 = [1,2,3,4];  // 数组居然也验证通过,不符合要求,我们只允许字符串类型
    if ((typeof str4 !== 'undefined' && str4 !== null) && str4.length > 0) {
        console.log('验证通过');
    } else {
        console.log('失败');
    }

    // 4. valueOf()可以返回对象的基本类型(未包装),用它来确保类型是字符串
    var str5 = 'admin';
    var str5 = new String('admin');
    var str5 = 100;
    var str5 = [1,2,3,4];  // 数组未通过测试, 说明检测方式正确
    if (((typeof str5 !== 'undefined' && str5 !== null) && (typeof str5.valueOf() === 'string')) && str5.length > 0) {
        console.log('验证通过');
    } else {
        console.log('失败');
    }

    // 实际开发中, 你可能用不到这么复杂的检测, 大多时候只需要测试存在性和非空即可, 但对于特殊情况下的检测方式,一定要知道
</script>
</body>
</html>
```


任务

?不会了怎么办
无数据提示暂无评论哟...我要评论
网站导航
标签地图
学习路径
视频教程
开发软件
旗下子站
php中文网
phpstudy
技术文章
文档工具
关于我们
企业合作
人才招聘
联系我们
讲师招募
QQ交流群
QQ官方交流群
微信公众号
微信公众号