【JS】【Core】数据类型 —— 原始类型,对象

JavaScript中的数据类型可分两类:原始类型(primitive type)和 对象类型(object type)。

原始类型宝包括数字,字符串和布尔值

JavaSciprt中除了数字,字符串,布尔值,null,undefined之外的就是对象了。

对象(object)是属性(property)的集合,每个属性都由“名/值对”构成。


原始类型/原始值

JS的原始值与对象有着根本区别,原始值是不可更改的,任何方法都无法更改一个原始值。

原始值的比较是值的比较,只有在它们的值相等时它们才相等。


数字

JavaScript不区分整数值和浮点数值,所有数字均采用浮点数值表示。

JavaScript中的算术元素在溢出或被零整除时不会报错。当数字运算结果超过了JavaScript所能表示的数字上限,结果为一个特殊的无穷大的值,在JavaScript中以Infinity 表示;同样的,当负数的值超过了所能表示的负数范围,结果为负无穷大,在JavaScript中与 -Infinity表示。

文本/字符串

JavaScript通过字符串类型来表示文本,字符串的索引值从 0 开始。

JavaSciprt中并没有表示单个字符的字符型。

字符串直接量

在JavaScript中的字符串直接量,是由单引号双引号括起来的字符序列。

由单引号定界的字符串中可以包含双引号,由双引号定界的字符串中也可以包含单引号。

在ECMAScript5中,字符串直接量可以拆分成数行,每行必须以反斜线(\)结束;如果希望在字符串直接量中另起一行,可以使用转义字符 \n,

例如:

“two \n lines”  // 定义一个显示为两行的字符串
"one \
 long \
 line "         // 用三行代码定义了显示为单行的字符串

转义字符

JavaScript转义字符:

转义字符 含义
\o NULL字符(\u0000)
\b 退格符(\u0008)
\t 水平制表符(\u0009)
\n 换行符(\u000A)
\v 垂直制表符(\u000B)
\f 换页符(\u000C)
\r 回车符(\u000D)
\" 双引号(\u0022)
\' 撇好或单引号(\u0027)
\\ 反斜线(\u005C)
\xXX  
\uXXXX  

字符串的方法/属性

确定一个字符串的长度,可以使用字符窜的length属性,例如:s.length

其他方法:

var s = "hello, world"    // 定义一个字符串
s.charAt(0)               // "h"第一个字符
s.charAt(s.length - 1)    // "d"最后一个字符
s.subString(1, 4)         // "ell"第2-4个字符
s.slice(1, 4)             // "ell"同上
s.slice(-3)               // "rld"最后三个字符
s.indexOf("l")            // 2 字符 l 首次出现的位置
s.lastIndexOf("l")        // 10, 字符 l 最后一次出现的位置
s.indexOf("l", 3)         // 3,在位置3之后首次出现字符 l 的位置
s.split(", ")             // ["hello", "world"]分隔成子串
s.replace("h", "H")       // 全文字替换
s.toUpperCase()           // "HELLO, WORLD"

在JavaScript中,字符串是固定不变的,类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并没有发生改变

布尔值

只有两个值: true 和 false

任意JavaScript的值都可以转化为布尔值,

下面这些值会被转换成false:

undefined
null
0
-0
NaN
"" // 空字符串


其他所有值,包括所有对象(数组)都会转换成 true


布尔值包含 toString()方法,可以使用这个方法将字符串转换为 "true" 或 "false"


逻辑运算符:

$$  ||  !


null , undefined

尽管 null 和 undefined 是不同的,但它们都表示 “值的空缺”,两者往往可以互换;判断相等运算符 == 认为两者是相等的,要使用严格相等运算符 ===来区分它们。

null 和 undefined 都不包含任何属性和方法。


全局对象

当JavaScript解释器启动(或者任何WEB浏览器加载新页的时候),它将创建一个新的全局对象,并给他一组定义的初始属性:

  • 全局属性 —— 比如undefined, Infinity, NaN
  • 全局函数 —— 比如isNan(), parseInt(),eval()
  • 构造函数 —— 比如Date(), RegExp(), String(), Object(), Array()
  • 全局对象 —— 比如Math, JSON

在代码的最顶级 —— 不在任何函数内的JavaScript代码,可以使用JS关键字 this 来引用全局对象:

var global = this;


包装对象

存取字符串,数字或布尔值的属性时,创建的临时对象(String, Number, Boolean)称作包装对象

它只是偶尔用来区分字符串值和字符串对象,数字和数值对象以及布尔值和布尔对象。

例如:

var s = "hello world!";
var word = s.substring(s.indexof("") + 1, s.length);

JS会将字符串值通过 new String(s)的方式转换成对象。










你可能感兴趣的:(JS.Core)