JavaScript 是一种 弱类型或者说 动态语言。这意味着你不用提早声明变量的类型,在程序运行过程当中,类型会被自动肯定。(解释一行,执行一行)这也意味着你可使用 同一个变量保存不一样类型的数据:
最新的 ECMAScript 标准定义了 7 种 数据类型:web
6种 原型数据类型:编程
以及 Object 对象segmentfault
除 Object 之外的全部 类型都是不可变的(值自己没法被改变)。例如,与 C 语言不一样, JavaScript中字符串是不可变的(译注:如,JavaScript 中对字符串的操做必定返回了一个新字符串,原始字符串并无被改变)。咱们称这些类型的值为“原始值”:
布尔值数据类型只能有两个值,它们是文本 true 和 false。 布尔值是一个真值:它指定条件是否为 true。
true 和 1 比较是相同,false 和 0 比较是相同(是 “==” 比较),由于内部会实现数据类型转化,将 true 转换成 1,将 false 转换成 0。可是使用 “===” 就不相等了,由于他们的数据类型不等。数组
虽然Boolean类型的字面值只有两个,但JavaScript中全部类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,能够调用类型转换函数Boolean(),例如:浏览器
在这个例子中,字符串message被转换成了一个Boolean值,该值被保存在messageAsBoolean变量中。能够对任何数据类型的值调用Boolean()函数,并且总会返回一个Boolean值。至于返回的这个值是true仍是false,**取决于要转换值的数据类型及其实际值。框架
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空的字符串 | ""(空字符串) |
Number | 任何非0数值(包括无穷大) | 0和NAN |
Object | 任何对象 | null |
Undefined | 不适用 | undefined |
Null 数据类型在 JavaScript 中 仅具备一个值:null。null 关键字不能用做函数或变量的名称。
包含 null 的变量不包含有效的数字、字符串、布尔值、数组或对象。经过为变量赋 null值能够清除变量的内容(不删除变量)。编程语言
(1)在 JavaScript 中,null 与 0 不一样(在 C 和 C++ 中)。 函数
(2)JavaScript 中的 typeof 运算符将 null 值报告为 Object 类型而不是 Null 类型。(从逻辑角度来看,null值表示一个空对象指针) 测试
若是定义的变量准备在未来用于保存对象,那么最好将该变量初始化为null而不是其余值。这样一来,只要直接检测null值就能够知道相应的变量是否已经保存了一个对象的引用。spa
实际上,undefined值是派生自null值的,所以ECMA-262规定对它们的相等性测试要返回true。
尽管null和undefined有这样的关系,但它们的用途彻底不一样。不管在什么状况下都没有必要把一个变量的值显式地设置为undefined,但是一样的规则对null却不适用。
换句话说,只要意在保存对象的变量尚未真正保存对象,就应该明确地让该变量保存null值。这样作不只能够体现null做为空对象指针的惯例,并且也有助于进一步区分null和undefined。
Undefined 类型只有一个值,即特殊的 undefined。在使用var声明变量但 未对其加以初始化时,这个变量的值就是 undefined。
undefined 翻译中文 → 未定义(defined 翻译中文 → 定义)
在早期的JavaScript版本中是没有规定undefined这个值的,因此在有些框架中为了兼容旧版浏览器,会给window对象添加undefined值。
一、若使用 “==” 进行比较,则他们是相等的,由于比较的是值
二、区分他们的两种方法(比较他们的数据类型)
(1)使用 typeof 将他们区分
(2)若使用全等 “===” ,比较的是值和数据类型,只有全都相同才返回 true
Number类型用来表示 整数值和 浮点数值,还有一种特殊的数值,即 NaN(非数值 Not a Number)。
整数值能够是 正整数、 负整数和 0。 它们可经过以 10 为基数(十进制)、以 16 为基数(十六进制)和以 8
为基数(八进制)来表示。 JavaScript 中的 大多数数字都写成十进制形式。
经过在整数前面加前导“0x”(零和 x|X)来表示十六进制(“hex”)整数。 字母 A 到 F 以单个数字的形式表示以 10 为基数的 10 到 15。 字母 A 到 F 用于以单个数字的形式表示以 10 为基数的 10 到 15。 即,0xF 至关于 15,0x10 至关于 16。
经过在八进制整数前面加前导“0”(零)来表示八进制整数。 八进制整数只包含 0 到 7 的数字。 具备前导“0”并包含数字“8”和/或“9”的数字将被解释为十进制数字。
浮点值能够是 带有小数部分的整数。此外,还能够用 科学计数法来表示它们。即,使用大写或小写字母“e”来表示“10 的幂”。
JavaScript 使用数字表示形式的 8 字节 IEEE 754 浮点标准来表示数字。 这意味着您能够编写最大为 1.79769x10308 和最小为 5x10-324 的数字。 包含小数点且小数点前面有单个“0”的数字被解释为十进制浮点数。
NaN → 英文翻译 Not A Number
NaN 用于表示一个 原本要返回数值的操做数未返回数值的状况(这样就不会抛出错误了)。例如,在其余编程语言中,任何数值除以0都会致使错误,从而中止代码执行。但在 JavaScript中,任何数值除以0会返回NaN,所以不会影响其余代码的执行。
NaN自己有两个非同寻常的特色。首先,任何涉及NaN的操做(例如NaN/10)都会返回NaN,这个特色在多步计算中有可能致使问题。其次,NaN与任何值都不相等,包括NaN自己。例如,下面的代码会返回false。
isNaN()函数,用于判断是不是一个非数字类型。若是传入的参数是一个非数字类型,那么返回true;不然返回false;
isNaN()函数,传入一个参数,函数会先将参数转换为数值。若是参数类型为对象类型,会先调用对象的valueOf()方法, 再肯定该方法返回的值是否能够转换为数值类型。若是不能,再调用对象的toString()方法,再肯定返回值。
JavaScript的字符串类型用于表示文本数据。
String是一组16位的无符号整数值的“元素”。在字符串中的每一个元素占据了字符串的位置。第一个元素的索引为0,下一个是索引1,依此类推。字符串的长度是它的元素的数量。
不一样于类 C 语言,JavaScript 字符串是不可更改的。这意味着字符串一旦被建立,就不能被修改。可是,能够基于对原始字符串的操做来建立新的字符串。
(1)获取一个字符串的子串可经过选择个别字母或者使用 String.substr()
(2)两个字符串的链接使用链接操做符 (+) 或者 String.concat()
toString()方法将其余数据类型转换成 String 类型。但若对 null 或 undefined 进行操做,则会报错。
String()方法一样能实现 toString()的效果,而且能够对 null 和 undefined 进行操做。
原理:先调用 toString(),若是能够转换成字符串,就将结果直接返回。否,再进行判断是 null 仍是 undefined,而后返回‘null' 或 ‘undefined'
符号(Symbols)是ECMAScript 第6版新定义的。符号类型是惟一的而且是 不可修改的,而且也能够用来做为Object的key的值。在某些语言当中也有相似的原子类型(Atoms),你也能够认为为它们是C里面的枚举类型。