美文网首页
21天(js高程)-第4天

21天(js高程)-第4天

作者: JerryChen_ | 来源:发表于2016-03-16 20:49 被阅读87次

    1,注意:用var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中用var定义一个变量,那么这个变量在函数退出后就会被销毁。

    2,省略var操作符可以定义全局变量。但在局部作用域中定义的全局变量很难维护,而且如果有意地忽略了var操作符,也会由于相应变量不会马上就有定义而导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致抛出ReferenceError错误。

    3,可以用一条语句定义多个变量,变量之间用逗号隔开。

    4,在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。


    3.4数据类型

    ECMAScript中有5种基本数据类型(简单数据类型):Undefined,Null,Number,Boolean,String。

    还有1种复杂数据类型:Object。Object本质上是由无序的名值对组成的。

    所有值最终都将是上述6种数据类型之一(ECMAScript数据类型具有动态性)。

    3.4.1 typeof操作符

    typeof是操作符而不是函数,用于检测给定变量的数据类型。

    调用typeof null,会返回"object",因为特殊值null被认为是一个空的对象引用。

    从技术角度讲,函数在 ECMAScript 中是对象,不是一种数据类型。


    3.4.2 Undefined类型

    在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。

    var message;//这个变量声明后默认取得了undefined值。
    alert(message===undefined)//true

    ECMA-262 第 3 版之前的版本中并没有规定这个值。第 3 版引入这个值是为了正式区分空对象指针与未经初始化的变量。

    对于尚未声明过的变量,只能执行一项操作,即使用typeof操作符检测其数据类型(对未经声明的变量调用delete不会导致错误,但这样做没什么实际意义,而且在严格模式下确实会导致错误)。

    var message;
    alert(message)//显示“undefined”
    alert(age);//发生错误

    困惑:对未初始化的变量执行typeof操作符会返回undefined值,而对未声明的变量执行typeof操作符同样也会返回undefined值。

    var message;
    alert(typeof message) ;//"undefined"
    alert(typeof age);//"undefined"


    3.4.3 Null类型

    null值表示一个空对象指针

    var car=null;
    alert(typeof car);//"object"

    如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为null而不是其他值。这样一来,只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。

    if(car!=null){
        //执行一些操作;
    }

    实际上,undefined值是派生自null值的,因此ECMA-262规定他们的相等性测试要返回true;

    alert(null==undefined);//true;

    位于null和undefined之间的相等操作符(==)总是返回true,不过要注意的是,这个操作符出于比较的目的会转换其操作数。

    而alert(null===undefined); //false

    只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值。这样做不仅可以体现null作为空对象指针的惯例,而且也有助于进一步区分null和undefined。


    3.4.4 Boolean类型

    该类型只有两个值:true 和 false;

    这两个值和数字值不是一回事,true不一定等于1,而false不一定等于0;

    注意:Boolean类型的字面值true和false是区分大小写的,也就是说,True和False(以及其他形式的混合大小写形式)都不是Boolean值,只是标识符。

    ECMAScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()

    var message="Hello World!";
    var messageAsBoolean=Boolean(message);

    除了以下几个转换为false值以外其他都为true:
    1,""(空String);2,null(空对象);3,Number(0和NaN);4,undefined;

    这些转换规则对理解流控制语句(如if语句)自动执行相应的Boolean转换非常重要。

    var message="Hello World!";
    if(message){
      alert("Value is true");
    }

    3.4.5 Number类型


    相关文章

      网友评论

          本文标题:21天(js高程)-第4天

          本文链接:https://www.haomeiwen.com/subject/gkqqlttx.html