Javascript核心读书有感之类型、值和变量(6)

RegExp对象并不是语言中的基本数据类型,和Date一样,它只是一种具有实用API的特殊对象。正则表达式的语法很复杂,API也很丰富。在第10章节会详细介绍。RegExp是一种强大和常用的文本处理工具,此处只是一个概述。

尽管RegExp并不是语言中的基本数据类型,但是他们依然具有直接量的写法,可以直接在javascript中使用。在两条斜线之间的文本构成了一个正则表达式的直接量。第二条斜线之后也可以跟随一个或多个字母。用来修饰匹配模式的含义。例如:

复制代码 代码如下:


    /^HTML/ //匹配以HTML开始的字符串
            /[1-9][0-9]*/  //匹配一个非零数字,后面是任意个数字
            /\bjavascript\b/i/ //匹配单词javascript,并忽略大小写

RegExp对象定义了很多有用的方法,字符串同样具有可以接受RegExp参数的方法。例如:

复制代码 代码如下:


    var text = "testing:1,2,3"; //文本示例
            var pattern = /\d+/g / //匹配所有包含一个或多个数字的实例
                pattern.test(text) // =>true:匹配成功
             text.search(pattern) //=>9 :首次匹配成功的位置
             text.match(pattern) //=> ["1","2","3"]所有匹配组成数组
             text.repeat(pattern,"#"); //=>"testing:#,#,#"
             text.split(/\D+/); //=>["","1","2","3"]:用非数字字符截取字符串

3.布尔值

布尔值指代真或假,开或关,这个类型只有两个值,保留字true或false

javascript中的比较语句的结果通常都是布尔值。例如

a==4
这段代码用来检测变量的a的值是否等于4.如果等于,则值为true,如果不等值为false

布尔值通常用于javascript的控制语句中,例如javascript中的if/else语句,如果布尔值为true执行第一段逻辑,如果为false执行另一段代码,例如

复制代码 代码如下:


    if (a == 4)
                b = b + 1;
            else
                a = a + 1;

任意javascript的值都可以转化为布尔值,下面这些值都被转化为false

复制代码 代码如下:


    undefined
        null
        0
        -0
        NaN
        ""//空字符串

所有其它值,包括所有对象(数组)都会被转换为true,false和上面6个可以转化为false的值有时候称为“假值”,javascript期望使用一个布尔值时,假值会被当做false,真值会被当做true

来看一个例子,加上变量o是一个对象或是null,可以通过一条if语句来检测o是否是非null值。

if(o!==null)...
不等操作符“!==”将o和null比较,并得出结果为 true或false。可以先忽略这里的比较语句,null是一个假值,对象是一个真值。

if(o)...
对于第一种情况,只要当o不是null时才会执行if后的代码,第二种情况的限制没有那么严格。只有o不是false或任何假值(比如null或unfined)时才执行这个if。

布尔值包含toString()方法,因此可以使用这个方法将字符串转换为 “true”或"false",但它不包含其他有用的方法,除了这个不重要的API,还有三个重要的布尔值运算符。

&&运算符,||运算符和一元操作符“!”执行了布尔非(NOT)操作,如果真值返回false,假值返回true,比如

复制代码 代码如下:


    if ((x == 0 && y == 0) || !(z == 0)) {
                //x和y都是零或z是非零
            }

4.null和undefined

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfxyy.html