js数据类型重要知识整理

js数据类型种类

js数据类型一共有7种,分别是:number,string,Null ,undefined,symbol,boolean,Object其中symbol类型不常用,所以重点理解其余6种,

1.1 number

number类型是ECMAscript中最令人关注的数据类型了,这种类型使用 IEEE754 格式(二进制浮点数算术标准)64位浮点数来表示 整数和浮点数值,浮点数值即小数,也就是说这就是说,JavaScript语言的底层根本没有整数,所有数字都是小数(64位浮点数)。

var 1=1.0 //true

1.1.1 最基本的数值字面量格式如下几种:

十进制:十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值

默认情况下,JavaScript 内部会自动将八进制、十六进制、二进制转为十进制。下面是一些例子。

var octalNum1 = 070; // 八进制的 56
var octalNum2 = 079; // 无效的八进制数值——解析为 79
var octalNum3 = 08; // 无效的八进制数值——解析为 8

var hexNum1 = 0xA; // 十六进制的 10
var hexNum2 = 0x1f; // 十六进制的 31
var aum1 =0b110;//十进制的6
var aum= 0b1010;//十进制的10
复制代码
1.1.2数值范围

由于内存的限制,ECMAScript 并不能保存世界上所有的数值。使用Number.MIN_VALUE 和Number.MAX_VALUE可以得知ECMAscript能够表示的最小数值和最大数值,最小数值是 5e-324;最大数值是1.7976931348623157e+308,如果出现超出这个数值范围的值,就会被自动转换为特殊的infinity值。如果这个值是负数,则会被转换成 -Infinity (负无穷),如果这个数值是正数,则会被转换成 Infinity (正无穷)。可以使用isFinite()函数来检测一个数值是否在数值范围内,如:

var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result)); //false
var result = 11111111111111111111111111111111111111111111111111111111111
alert(isFinte(result); //true
复制代码
1.1.3NaN

NaN ,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数 未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以 0都会导致错误, 从而停止代码执行。但在 ECMAScript中,0除以 0会返回 NaN,正数除以 0 返回 Infinity,负数除以 0返回-Infinity。 ,因此不会影响其他代码的执行。 NaN 与任何值都不相等,包括 NaN 本身。但是NaN仍然是一个

alert(NaN == NaN); //false

2.2 string

String 类型用于表示由零或多个 16 位 Unicode 字符组成的字符序列,即字符串。字符串可以由双 引号(")或单引号(')表示,因此下面两种字符串的写法都是有效的:

var firstName = "Nicholas";
var lastName = 'Zakas';
复制代码
2.2.1 字符字面量

String 数据类型包含一些特殊的字符字面量,也叫转义序列,用于表示非打印字符,或者具有其 他用途的字符。这些字符字面量如下表所示:

字面量含义
\n换行
\t制表
\b空格
\r回车
\f进纸
\斜杠
'单引号( ' ),在用单引号表示的字符串中使用。例如: 'He said, 'hey.''
"双引号( " ),在用双引号表示的字符串中使用。例如: "He said, "hey.""
\xnn以十六进制代码 nn 表示的一个字符(其中 n 为0~F)。例如, \x41 表示 "A"
\unnnn以十六进制代码 nnnn 表示的一个Unicode字符(其中 n 为0~F)。例如, \u03a3 表示希腊字符Σ

ECMAScript 中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变。要改变 某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量,

3.3Null和Undefined

Null类型是一个只有一个值的数据类型,这个值就是null,它表示一个空对象指针,使用typeof检测符可以确定,

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

Undefined类型是第二个只有一个值的数据类型,即特殊的undefined,在使用 var 声明变量但未对其加以初始化时, 这个变量的值就是 undefined ;

var message;console.log(message == undefined); //true

null和undefined有共同之处,都可以表示“没有”

var a = undefined;
// 或者
var a = null;
复制代码

这两种写法的效果几乎等价。同时

console.log(null == undefined) //true 一般来说,对于对象,如果你目前不想给它赋值,那么就初始化null,对于非对象来说,如果不想给值的话, 就初始化为undefined(变量申明没有初始化的话,默认为undefined,可以不写),

4.4Boolean值

Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值:true 和 false 布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

这两个值与数字值不是一回事,因此 true 不一定等于 1,而 false 也不一定等于 0。需要注意的是, Boolean 类型的字面值 true 和 false 是区分大小写的。也就是说, True 和 False(以及其他的混合大小写形式)都不是 Boolean 值,只是标识符。 布尔值往往用于流程控制语句,如下:

if ('') {
  console.log('true');
}
// 没有任何输出
复制代码

5.5Object

对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。

什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。

    var obj = {
  foo: 'Hello',
  bar: 'World'
};
复制代码

上面代码中,大括号就定义了一个对象,它被赋值给变量obj,所以变量obj就指向一个对象。该对象内部包含两个键值对(又称为两个“成员”),第一个键值对是foo: 'Hello',其中foo是“键名”(成员的名称),字符串Hello是“键值”(成员的值)。键名与键值之间用冒号分隔。第二个键值对是bar: 'World',bar是键名,World是键值。两个键值对之间用逗号分隔。键名如果是数字,会自动转换为字符串,如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。

Object 的每个实例都具有下列属性和方法:

constructor :保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor) 就是 Object() 。

hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例 的原型中)是否存在。其中,作为参数的属性名( propertyName )必须以字符串形式指定(例 如: o.hasOwnProperty("name") )。

isPrototypeOf(object) :用于检查传入的对象是否是传入对象的原型

propertyIsEnumerable(propertyName) :用于检查给定的属性是否能够使用 for-in 语句 来枚举。与 hasOwnProperty() 方法一样,作为参数的属性名必须以字符 串形式指定。

toLocaleString() :返回对象的字符串表示,该字符串与执行环境的地区对应。

toString() :返回对象的字符串表示。

valueOf() :返回对象的字符串、数值或布尔值表示。通常与 toString() 方法的返回值 相同。

6.参考资料

1.阮一峰-javascript数据类型

2.javascript高级程序开发(第三版)

转载于:https://juejin.im/post/5c91dc0fe51d45590f356fe4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值