JavaScript 的数据类型,共有7种:
数值,字符串,布尔值,undefined,null,对象和symbol(ES6 新增的类型)。 注意:(NaN不是一种数据类型,它是一个特殊值,它的数据类型属于number) 数值,字符串,布尔值这三种类型又称为原始类型(最基本的数据类型,不能再分了)。 对象称为合成类型(往往是多个原始类型的合成)。 前六种又称为基本类型。数值
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。 以下两种情况,JavaScript 会自动将数值转为科学计数法表示,其他情况都采用字面形式直接表示: (1)小数点前的数字多于21位。 (2)小数点后的零多于5个。 使用字面量(literal)直接表示一个数值时,JavaScript 对整数提供四种进制的表示方法:十进制、十六进制、八进制、二进制。 十进制:没有前导0的数值。 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。 十六进制:有前缀0x或0X的数值。 二进制:有前缀0b或0B的数值。字符串
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。 单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。 如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。双引号字符串内部使用双引号,也是如此。 字符串默认只能写在一行内,分成多行将会报错。 如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠(反斜杠后面只能跟换行符,跟空格或其他字符会报错)。也可以使用字符串拼接的方式把一个长字符串分成几个短字符串拼接在一起。 字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始),但不能通过这种方法赋值,或增加删改字符串。 JavaScript 引擎内部,所有字符都用 Unicode 表示。 JavaScript 不仅以 Unicode 储存字符,还允许直接在程序中使用 Unicode 码点表示字符,即将字符写成\uxxxx的形式。 每个字符在 JavaScript 内部都是以16位(即2个字节)的 UTF-16 格式储存。也就是说,JavaScript 的单位字符长度固定为16位长度,即2个字节。布尔值
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。 undefined null false 0 NaN ""或''(空字符串) 补充:1.空数组,空函数,空对象(以及任何对象),对应的布尔值都是true。 2. 空字符串''和' ' (字符串里有个空格)是不一样的,空格也是字符,对应布尔值为trueundefined和null
undefined是一个表示”此处无定义”的原始值,转为数值时为NaN。 null是一个表示“空”的对象,转为数值时为0. null表示空值,即该处的值现在为空.undefined表示“未定义”.返回undefined的典型场景: // 变量声明了,但没有赋值 var i; i // undefined// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) { return x; } f() // undefined// 对象没有赋值的属性
var o = new Object(); o.p // undefined// 函数没有返回值时,默认返回 undefined
function f() {} f() // undefined