【JS】JavaScript数据类型

JavaScript的数据类型分为两类:原始类型和对象类型。原始类型包括数字、字符串和布尔值,其中有两个特殊的原始值null和undefined,但它们不是数字、字符串和布尔值。除了原始类型之外,剩下的便是对象,对象是属性的集合,每个属性都由“名/值对”构成,普通的对象是个无序集合,但数组对象是个有序集合,函数也是对象,调用函数可运行可执行代码,另外还有几个有用的类对象,它们是日期、正则和错误。JavaScript的数据类型还可以分为拥有方法的类型和不能拥有方法的类型,或者是可变类型和不可变类型。原始类型都是不可变类型,对象类型是可变类型或者叫做引用类型。

JavaScript的数据类型可以自由地进行转换,变量是无类型的,也可以说是动态类型,声明变量时不必指明变量类型,同一个变量也可以先后赋不同类型的值,可以使用var关键字来声明变量,就是个通用类型。JavaScript采用词法作用域,函数内声明的变量具有函数作用域,不在任何函数内声明的变量称做全局变量,在JavaScript程序中的任何地方都是可见的。JavaScript可以自动做许多类型转换,特别是遇到一些运算符的时候,但是有时候仍需要做显式转换,所有的对象都继承了两个转换方法,toString()和valueOf(),下面是几个类型转换的惯用法:

x + "" // 等价于String(x)
+x // 等价于Number(x) 也可以谢谢x-0
!!x // 等价于Boolean(x) 使用了两个叹号

JavaScript解释器有自己的内存管理机制,可以自动对内存进行垃圾回收,这意味着程序可以按需创建对象,我们则不必担心这些对象的销毁和内存回收,当不再有任何引用指向一个对象,解释器就会知道这个对象没用了,然后自动回收它所占用的内存资源。

JavaScript是一种面向对象的语言,拥有自己的方法,然而,作为非对象类型的数字、字符换和布尔值也可以拥有自己的方法,它们都有一个相同的方法是toString(),唯独无法拥有方法的是null和undefined。

数字——

JavaScript不区分整数值和浮点数值,所有数字均用浮点数表示。JavaScript提供了一些常见的基本运算符,复杂运算可通过Math对象实现。JavaScript预定义了全局变量Infinity和NaN,用来表示无穷大和非数字值。由于JavaScript的浮点数表示法是一种二进制表示方法,所以在表示十进制分数是要格外注意,以保证精度。Date对象是常用的与日期、时间相关的对象。

文本——

JavaScript采用UTF-16编码的Unicode字符集,字符串是一组无符号的16位值组成的序列。JavaScript字符串支持单引号和双引号,可以互相嵌套使用但要成对出现。JavaScript字符串的连接可以使用加号,支持下标访问,实际上就是一个只读数组,因为任何的修改都将产生一个新的字符串。模式匹配可以使用RegExp对象,也可以使用普通正则表达式,在两条斜线之间的文本则构成一个正则表达式直接量。

布尔值——

任意JavaScript的值都可以转换为布尔值,被转换为false的有undefined、null、0、-0、NaN以及空字符串,其它所有值都会转换为ture。null是JavaScript语言中的关键字,它表示一个特殊值,常用来描述“空值”,而undefined是预定义的全局变量,但不是关键字,它的值就是“未定义”。

全局对象——

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

包装对象——

当定义了一个字符串时,它不是对象,但可以通过句点访问它的属性,这是因为访问属性时new了一个临时的String对象,这个临时对象就叫包装对象,类似的还有数字和布尔值。

变量——

声明变量使用var关键字,尽管在全局作用域编写代码时可以不写var语句,但声明局部变量时则必须使用var语句,使用var时会遮盖同名全局变量,但不使用var时就直接操作的是那个全局变量。当声明一个JavaScript全局变量时,实际上是定义了全局对象的一个属性,当使用var声明一个变量时,创建的这个属性时不可配置的,也就是说这个变量时无法通过delete运算符删除的,而不使用var时则是可以delete的。每一段JavaScript代码都有一个与之关联的作用域链,这个作用域链是一个对象列表或者链表,这组对象定义了这段代码“作用域中”的变量。变量声明的一个特性是“声明提前”,下面是一个有趣的例子:

var scope = "global";
function f() {
console.log(scope); // "undefined"
var scope = “local”;
console.log(scope); // "local"
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值