《JavaScript高级程序设计》读书笔记3.2数据类型

  • 5种简单数据类型(基本类型)+1种复杂数据类型:
    • Undefined
    • Null
    • Boolean
    • Number
    • String
    • Object,本质是由一组无序的名值对组成的。

1. typeof操作符

  • typeof操作符会多返回一个数据类型“function”,本质上讲,函数在ECMAScript中是对象,但通过typeof区分函数和其他对象是有必要的。
  • 调用typeof null会返回“object”,因为null是一个空的对象引用。

2. Undefined类型

  • 只有一个值—undefined
  • 变量只声明没有初始化,自动被赋予undefined值。
  • 对未初始化的变量和未声明的变量执行typeof都会返回undefined值。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    var message;//变量声明后默认取得undefined值
    //下面这个变量没有声明
    //var age

    alert(message); //"undefined"
    alert(age); //产生错误

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

3. Null类型

  • 只有一个值—null
  • 逻辑角度来看,null值表示一个空对象指针,typeof操作符会返回“object”。因为JS中没有指针概念,空对象指针当作空对象,更好理解。
  • undefined值派生自null值,因此ECMA-262规定对它们的相等性测试要返回true.
    1
    alert(null==undefined);//true

“undefined值派生自null值”的理解: 如果把null理解为给变量创建一个空对象,即空的状态(与{}不一样);undefined理解为什么都没给变量,即无的状态。
undefined与null的区别

4.Boolean类型

  • 只有两个值,true和false。严格区分大小写。
  • 调用Boolean()将其他类型所有值转换为Boolean值。
数据类型 转为true值 转为false值
Boolean true false
String 非空字符串 空字符串
Number 任何非零数字值 0和NaN
Object 任何对象 Null
Undefined n/a undefined

5. Number类型

  • 分为整数和浮点数。

    • 整数可以用十进制、八进制、十六进制表示字面量,但在算术计算时,八进制和十六进制会转化为十进制。
    • 浮点数,必须包含一个小数点,并且小数点后必须至少有一位数。会不失时机转换为整数。可以用科学计数法。
  • NaN
    NaN是一个特殊值,用于表示本来要返回数值的操作数未返回数值的情况。两个显著特点:

    • 任何涉及NaN的操作都返回NaN.
    • NaN与任何值都不相等,包括NaN本身。
  • 数值转换

    • Number()复杂且不够合理,不常用
    • parseInt()字符串转换成整数。可以设置基数
    • parseFloat()字符串可以转换成浮点数值和十进制整数值.
1
2
3
4
5
6
7
var num1=parseInt("123blue"); //123
var num2=parseInt(""); //NaN
var num3=parseInt("0xA"); //10(十六进制)
var num4=parseInt(22.5); //22
var num5=parseInt("070"); //56(八进制)
var num6=parseInt("70"); //70
var num7=parseInt("0xf"16); //15(十六进制)
1
2
3
4
5
6
var num1=parseFloat("123blue"); //123(整数)
var num2=parseFloat("0xA"); //0
var num3=parseFloat("22.5"); //22
var num4=parseFloat("22.34.5"); //22.34
var num5=parseFloat("0908.5"); //908.5
var num6=parseFloat("3.125e7");//31250000

6.String类型

  • 用于表示由零个或多个16位Unicode字符组成的字符序列。
  • 不分(‘)和(“)。
  • 转换为字符串
    • toString()方法。可以指定基数,不适用于null和undefined类型。
    • String()。没有参数。可用于null和undefined。
    • 隐式转换:某个值+””

7.Object类型

ECMAScript中的对象是一组数据和功能的集合。

1
var o=new Object();

一个重要思想: 在ECMAScript中,Object是所有它的实例的基础。换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中

  • 所有对象都具有以下属性和方法:
    • constructor:保存着用于创建当前对象的函数。
    • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中是否存在。
    • isPropertyOf(Object):用于检查传入的Object是否是当前对象的原型。
    • proertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
    • toLocaleString():返回对象的字符串表示,与执行环境对应。
    • toString():返回对象的字符串表示。
    • valueOf():返回对象的字符串、数值、布尔值表示。
liborn wechat
欢迎您扫一扫上面的微信二维码,订阅我的公众号!