02 - JavaScript的数据类型

160 阅读2分钟

ES5

1. Undefined (未定义) / NaN (非数字)


2. null (空类型) - 定义空或者不存在的引用

null与undefined的区别:


3. 布尔值(true & false)

  • true
    • 非空字符串
    • 非0数字
    • 对象,new object()
  • false
    • "",空字符串
    • 0,数字0
    • null,空值
    • undefined,未赋值变量


4. 字符串 string

两种字符串的定义方式:

  1. var str = "string";
  2. var str = String("string");
  3. var str = new String("string");
这两种方式的区别:


由此可见,第一种和第二种方式是一回事,都是在内存里划出一块来存value(入栈),然后assign operator左边的变量指向该块内存。

如例子中的str1指向的value和str0的value是相同的,JavaScript是找内存中是否已经存在该value,如存在,在str1就指向同一块内存,即str0 === str1返回true。

第三种方式是创建一个对象(入堆)。str4是创建新的对象,故而str3和str4分别指向不同的对象。

字符串的使用

  • 加号➕运算符把两个字符串连接起来。


  • 访问字符串的长度:s.length


  • 访问字符串没有字符:s.charAt


  • 字符串的大小写转换:toLocaleLowerCase()、toLocaleUpperCase()、toLowerCase()、toUpperCase()
根据MDN的说法:

ECMAScript中涉及字符串大小写转换的方法有4个:toLowerCase()、toLocaleLowerCase()、toUpperCase()和toLocaleUpperCase()。其中,toLowerCase()和toUpperCase()是两个经典的方法,借鉴自java.lang.String中的同名方法。而toLocaleLowerCase()和toLocaleUpperCase()方法则是针对特定地区的实现。

对有些地区来说,针对地区的方法与其通用方法得到的结果相同,但少数语言(如土耳其语言)会为Unicode大小写转换应用特殊的规则,这时候就必须使用针对地区的方法来保证实现正确的转换。


5. 数值类型

JavaScript 类型系统——Number 数字类型 (讲得很好!)


6. 对象类型(详见对象篇)

包括Object、Function、String、Number、Boolean、Array、RegExp、Date、Global、Math、Error,以及宿主环境提供的Object类型。