js基本概念(上)之数据类型

  • 语法

    • 区分大小写
      • typeof(关键字)不能用作变量、函数名或操作符
      • 而typeOf则可以,O为大写,即它不是关键字也不是保留字
    • 标识符

      • 第一个字符必须是一个字母、下划线(_)或一个美元符号($)
      • 其他字符可以是字母、下划线、美元符号或数字
      • 采用驼峰大小写格式,例:

        firstSecond   
        myCar        
        doSomethingImportant
  • 关键字和保留字
    • in是关键字
    • 如果使用了关键字作标识符,会导致”Identified Expected”错误
  • 变量

    • 变量是松散类型的,即可以用来保存任何类型的数据
    • 省略var操作符可以定义全局变量

      • 在全局作用域中声明变量,不管变量是否使用var操作符创建,都是全局变量
      • 在函数内声明变量(不推荐,因为在局部作用域中定义的全局变量很难维护)

        function test()
        {
            message = "hi";     //全局变量(省略var)
        }
        test();
        alert(message);         //"hi"
        function test()
        {
             var message = "hi";   //局部变量
        }
        test();
        alert(message);            //错误!
      • 初始化变量并不会把它标记为任何一种数据类型,只是给变量赋值而已。因此可以在修改变量值的同时修改值的类型
        var message = "hi";
        message = 100;  //有效,但不推荐
  • 数据类型

    • 基本数据类型
      • Undefined
      • Null
      • Boolean
      • Number
      • String
    • 复杂数据类型
      • Object(本质上是由一组无序的名值对组成的)
    • typeof操作符

      • ”undefined”——如果这个值未定义
      • “boolean”——如果这个值是布尔值
      • “string”——如果这个值是字符串
      • “number”——如果这个值是数值
      • “object”——如果这个值是对象null(null被认为是一个空的对象引用)
      • “function”——如果这个值是函数

        从技术角度讲,函数在ECMAScript中是对象,不是一种数据类型。然而,函数也确实有一些特殊的属性,因此通过typeof操作符来区分函数和其他对象是有必要的。

      • 几个使用typeof操作符的例子:

        var message = "some string";
        alert(typeof message);          //"string"
        alert(typeof(message));         //"string",括号为非必需的,因为typeof是一个操作符而不是函数
        alert(typeof 95);               //"number"
      • typeof与instanceof的区别
    • Undefined类型

      • 已声明未经初始化的变量默认就会取得undefined值:

        var message;
        alert(message == undefined);    //true
      • 变量已声明与未声明

        var message;        //这个变量声明之后默认取得了undefined值
        var age             //这个变量并没有声明
        alert(message);     //"undefined"
        alert(age);         //产生错误
        
        //所以当用typeof检测变量数据类型,结果为"undefined"的时候,有两种情况:要么是变量已声明为未初始化给它赋值,要么是变量没有声明。
        alert(typeof message);      //"undefined"
        alert(typeof age;           //"undefined"
    • Null类型

      • 从逻辑角度来看,null值表示一个空对象指针

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

        if(car != null)
        {
            //对car对象执行某些操作
        }
      • undefined值是派生自null值的

        alert(null == undefined);    //true
      • 变量不应显式地赋值为undefined,而显式地给对象赋值为null则是推荐的做法:

        var message = undefined;    //不推荐
        var car = null;             //推荐
    • Boolean类型

      • Boolean(undefined) = false;
    • Number类型

      • 八进制(第一位必须是零(0),然后是八进制数字序列(0-7)。如果数值超出范围,那么前导零将被忽略,后面的数值将被当做十进制数值解析)

        var octalNum1 = 070;    //八进制的56
        var octalNum2 = 079;    //无效的八进制数值--解析为79(十进制)
        var octalNum3 = 08;    //无效的八进制数值--解析为8(十进制)
      • 十六(前两位必须是0x,后跟0-9、A-F(可大写也可小写))

        var hexNum1 = 0xA;      //十六进制的10
        var hexNum2 = 0x1f;     //十六进制的31
      • 浮点数值

        1. 保存浮点数值需要的内存空间是保存整数值的两倍
        2. 永远不要测试某个特定的浮点数值。浮点数值的最高精度是17位小数,然而进行算术计算时其精确度远远不如整数
          if(a + b == 0.3)    //不要做这样的测试!
          {
              alert("You got 0.3.");
          }
      • Number.MIN_VALUE———5e-324
        Number.MAX_VALUE———1.7976931348623157e+308

      • NaN

        1. 在ECMAScript中任何数值除以0会返回NaNR
        2. 任何涉及NaN的操作(例如NaN/10)都会返回NaN
        3. NaN与任何值都不相等,包括NaN本身

          alert(NaN == NaN);  //false
        4. isNaN()函数(是否不是数值)

          alert(isNaN(NaN));      //true
          alert(isNaN(10));       //false(10是一个数值)
          alert(isNaN("10"));     //false(可以被转换为数值10)
          alert(isNaN("BLUE"));   //true(不能被转换成数值)
          alert(isNaN("true"));   //false(可以被转换成数值1)
    • String类型

      • toString()
        1. 除null和undefined外其他数据类型都有这个方法
      • String()
        1. 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果
        2. 如果值是null,则返回”null”
        3. 如果值是undefined,则返回”undefined”
          var value1 = 10;
          var value2 = true;
          var value3 = null;
          var value4;
          
          alert(String(value1));  //"10"
          alert(String(value2));  //"true"
          alert(String(value3));  //"null"
          alert(String(value4));  //"undefined"
    • Object()类型

      • 通过执行new操作符后跟要创建的对象类型的名称来创建
        var o = new Object();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值