JavaScript数据类型

JS 里的数据类型

七种数据类型

Number,String,Boolean,Null,Undefined,Symbol(ES6加入),Object

  • 数值(number):整数和小数(比如1和3.14)。
  • 字符串(string):文本(比如Hello World)。
  • 布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)。
  • undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值。
  • null:表示空值,即此处的值为空。
  • 对象(object):各种值组成的集合。

基础数据类型


Number 类型

  • 因为 Number 在javascript中是以双精度浮点数的形式存储的,比如11.0是相同的,是同一个数。所以在数值运算的时候需要注意这一点。

  • NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。值得一提的是 NaN === NaN //false NaN不等于任何值包括它自己。

String 类型

  • JavaScript中存在 'hello' "hello" 两种字符串引号,但是由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号,我也选择遵守
  • 注意 '' "" 是空字符串 ' ' " " 是空格字符串 \ 表示转义字符 ' ----\''---- '

关于转义

反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。

需要用反斜杠转义的特殊字符,主要有下面这些。

  • \0 :null(\u0000
  • \b :后退键(\u0008
  • \f :换页符(\u000C
  • \n :换行符(\u000A
  • \r :回车键(\u000D
  • \t :制表符(\u0009
  • \v :垂直制表符(\u000B
  • \' :单引号(\u0027
  • \":双引号(\u0022
  • \\ :反斜杠(\u005C

Boolean 类型

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

下列运算符会返回布尔值:

  • 前置逻辑运算符:!(Not)
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。

  • undefined
  • null
  • false
  • 0
  • NaN
  • "" 或 ''(空字符串)

Null 类型 和 Undefined 类型

关于null 类型 和 undefined 类型可以这样理解,null表示值为空,undefined表示"未定义"

  • undefined类型只有一个undefined值,null类型只有一个null值,但是javascript是一个动态类型的语言,如果定义一个变量,但是没有给它赋值 它的值就是undefined
var name;
console.log(name);//undefined
  • 如果想销毁一个对象,回收对象的内存,就将null赋给obj,这样没有被指向的对象会被垃圾回收机制回收
var obj = {};
obj = null;//变量obj被强制指向null,没有被引用的对象{}将被垃圾回收机制回收

复杂数据类型


Object 类型

  • object 是复杂数据类型,由基础数据类型组成
var obj = {
    'name':'angmieee',
    age:22,
    self:obj //这个属性指向自身 内存
}
  • 在访问属性的写法上,obj.name等同于obj['name'],但是这样的写法有诸多限制,且属性名必须符合标识符的写法
  • array和function本质上都是object类型

其他

JavaScript这门语言在设计之初由于历史原因导致它设计得并不好,在语法上会存在很多令学习者费解的地方

  • BUG1 是在unicode之后utf-8之前发明之前诞生的,所以对utf-8的支持是不完整的,字符串长度返回值可能不正确,这是历史原因造成的
  • BUG2 有两个空值null,undefined这让初学者难以理解(js之父承认这是设计的错误)
  • BUG3 typeof null返回 "object" 是个历史错误(js发明者自己这么说的),而在之后的ES更新版本只是为要保持浏览器兼容性没有对它进行修改
  • BUG4 typeof function返回的却是 "function" 原因同上

参考阮一峰的博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容