• 第4章 数据类型


    学习要点:

    1.typeof操作符

    2.Undefined类型

    3.Null类型

    4.Boolean类型

    5.Number类型

    6.String类型

    7.Object类型

    ECMAScript中有5种简单数据类型:UndefinedNullBooleanNumberString。还有一种复杂数据类型——ObjectECMAScript不支持任何创建自定义类型的机制,所有值都成为以上6中数据类型之一。

    一.typeof操作符

     typeof操作符是用来检测变量的数据类型。对于值或变量使用typeof操作符会返回如下字符串。

    字符串

    描述

    undefined

    未定义

    boolean

    布尔值

    string

    字符串

    number

    数值

    object

    对象或null

    function

    函数

    1.var box;
       alert(typeof box); //box是Undefined类型,值是undefined,类型返回的字符串是undefined

    2.var box = true;
       alert(typeof box); //box是Boolean类型,值是true,类型返回的字符串是boolean

    3.var box = '李炎恢';
      alert(typeof box); //box是String类型,值是'李炎恢',类型返回的字符串是string

    4.var box = 250;
       alert(typeof box); //box是Number类型,值是250,类型返回的字符串是number

    //空的对象,表示这个对象创建了,里面没东西
    //空对象,表示没有创建,就是一个null

    5.var box = {};
       alert(typeof box); //box是Object类型,值是[object Object],类型返回的字符串是object

       var box = null;
       alert(typeof box); //box是Null类型,值是null,类型返回的字符串是object

       var box = new Object();
       alert(box); //box是Object类型,值是[object Object],类型返回的字符串是object

    6.function box() { }

       alert(typeof box);  //box是Function函数,值是function box() {}打印出本体,类型返回的字符串是function

    一.typeof操作符

     var box = '李炎恢';

    alert(typeof box);

    alert(typeof '李炎恢');

     typeof操作符可以操作变量,也可以操作字面量。虽然也可以这样使用:typeof(box),但,typeof是操作符而非内置函数。PS:函数在ECMAScript中是对象,不是一种数据类型。所以,使用typeof来区分functionobject是非常有必要的。

    二.Undefined类型

    Undefined类型只有一个值,即特殊的undefined。在使用var声明变量,但没有对其初始化时,这个变量的值就是undefined

    var box;

    alert(box);

    没必要写成var box = undefined; 

    alert(box);

    PS我们没有必要显式的给一个变量赋值为undefined,因为没有赋值的变量会隐式的(自动的)赋值为undefined;而undefined主要的目的是为了用于比较,ECMAScript3版之前并没有引入这个值,引入之后为了正式区分空对象与未经初始化的变量。

    var box;

    var age;

    alert(box);  undefined

    alert(age);  //age is not defined 报错

    alert(typeof box);  undefined

    alert(typeof age);   undefined

    PS如果typeof boxtypeof age都返回的undefined。从逻辑上思考,他们的值,一个是undefined,一个报错;他们的类型,却都是undefined。所以,我们在定义变量的时候,尽可能的不要只声明,不赋值。

    三.Null类型

     Null类型是一个只有一个值的数据类型,即特殊的值null。它表示一个空对象引用(指针),而typeof操作符检测null会返回object

    var box = null;

    alert(typeof box);

    var box = {};

    if (box != null) { //不等于null,说明不是空对象
    alert('对象已经创建成功!');
    }

    var box = null; //这个表示,你还没有创建对象,但先声明了对象引用而必须初始化的结果
    //你还没有来得及创建对象,先声明一个对象的变量放在那边,默认初始化为null

    var box=null;
    var box = 1;
    alert(typeof box);

    var box = ''; //创建一个字符串变量,一开始不知道初始化什么字符串,所以,就给他一个空字符串初始化

    var box = 0; //数值初始化,一般用0

    var box = false; //布尔值初始化,一般一开始用false或者true

    alert(undefined == null); //他们都是空的,所以相等理所当然,true

    alert(undefined === null); //数据类型也必须相等才可以 false

    alert(typeof undefined == typeof null); false

    四.Boolean类型

    Boolean类型有两个值(字面量)truefalse。而true不一定等于1false不一定等于0JavaScript是区分大小写的,TrueFalse或者其他都不是Boolean类型的值。

    var box = true;

    alert(typeof box);

    虽然Boolean类型的字面量只有truefalse两种,但ECMAScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以使用转型函数Boolean()

    var hello = 'Hello World!';

    var hello2 = Boolean(hello);

    alert(typeof hello);

    上面是一种显示转换,属于强制性转换。而实际应用中,还有一种隐式转换。比如,在if条件语句里面的条件判断,就存在隐式转换。

    var hello = 'Hello World!';

    if (hello) {

    alert('如果条件为true,就执行我这条!');

    } else {

    alert('如果条件为false,就执行我这条!');

    }

    以下是其他类型转换成Boolean类型规则

     

    数据类型

    转换为true的值

    转换为false的值

    Boolean

    true

    false

    String

    任何非空字符串

    空字符串

    Number

    任何非零数字值(包括无穷大)

    0NaN

    Object

    任何对象

    null

    Undefined

     

    undefined

  • 相关阅读:
    SQL语句优化(转)
    ConcurrentHashMap源码分析
    centos 上安装gearman
    从与UCenter集成的过程中,看到Discuz的不开放
    UCenter实现同步登陆
    讨人喜欢的 MySQL replace into 用法(insert into 的增强版)
    Truncate Table
    mysql中key 、primary key 、unique key 与index区别
    PHP登录时限
    用Fragment实现如新浪微博一样的底部菜单的切换
  • 原文地址:https://www.cnblogs.com/Xuman0927/p/5945467.html
Copyright © 2020-2023  润新知