资讯专栏INFORMATION COLUMN

数据类型

娣辩孩 / 1317人阅读

摘要:下表给出了各种数据类型以及对其对应的转换规则。例如转换为字符串数值布尔值对象和字符串值调用都会返回字符串的一个副本,但和值没有这个方法。返回对象的字符串数值或布尔值表示。

数据类型

ECMAScript中有5种简单的数据类型(也称基本数据类型)和 一种复杂数据类型(也称引用类型)

基本数据类型:Undefined、Null、Boolean、Number、String

引用类型:object

1. Undefined

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

var message;
alert(message == undefined);  //true
2. Null

Null类型是第二个只有一个值得数据类型,这个特殊的值是null。null值表示空指针对象,故使用typeof操作符检测null值时会返回"object",实际上,undefined值是派生自null值的,因此ECMA-262规定对他们的相等性测试要返回true

var car = null;
alert(typeof car);  // "object"

alert(null == undefined)  //true
3. Boolean

Boolean 类型是 ECMAScript 中使用得最多的一种类型,该类型只有两个字面值:true和false。true 不一定等于 1,而 false 也不一定等于 0

var found = true; 
var lost = false;
Boolean()

可以对任何数据类型的值调用Boolean()函数,而且总会返回一个Boolean值。至于返回的是true还是false,取决于要转换值的数据类型及其实际值。下表给出了各种数据类型以及对其对应的转换规则。

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 ""(空字符串)
Number 任何非零的数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a(不适用) Undefined
4. Number 1)NaN (Not a Number)

NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数为未返回数值的情况(这样就不会抛出错误了)。但在 ECMAScript中,任何数值除以 0会返回 NaN。
NaN有两个不同寻常的特点:

任何涉及 NaN 的操作(例如 NaN/10)都会返回 NaN

NaN 与任何值都不相等,包括 NaN 本身

alert(NaN == NaN); //false
2)isNaN()

函数,这个函数接受一个参数,该参数可以是任何类型,而这个函数会帮我们确定这个参数是否"不是数值"。isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或 Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回 true。

alert(isNaN(NaN)); //true 
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)
3) 数值转换:Number()、parseInt()和 parseFloat()

转型函数 Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值

Number()函数的转换规则

如果是 Boolean 值true 和 false 将分别被转换为 1 和 0

如果是数字值只是简单的传入和返

如果是 null 值,返回 0

如果是 undefined,返回 NaN

如果是字符串,遵循下列规则:

如果字符串中只包含数字(包括前面带正号或负号的情况),则将其转换为十进制数值,即"1"会变成 1,"123"会变成 123,而"011"会变成 11(注意:前导的零被忽略了)

如果字符串中包含有效的浮点格式,如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导零)

如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值

如果字符串是空的(不包含任何字符),则将其转换为 0

如果字符串中包含除上述格式之外的字符,则将其转换为 NaN

如果是对象,则调用对象的 valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString()方法,然后再次依照前面的规则转换返回的字符串值。

 var num1 = Number("Hello world!"); //NaN 
 var num2 = Number(""); //0 
 var num3 = Number("000011"); //11 
 var num4 = Number(true); //
2.parseInt()
3.parseFloat()
5. String

string类型用于表示由零或者16位Unicode字符组成的字符序列,即字符串。字符串可以有双引号(")或者单引号(")表示,不过以双引号开头的字符串也必须以双引号结尾,而以单引号开头的字符串必须以单引号结尾。

var firstName = "Nicholas"; 
var lastName = "Zakas";
var firstName = "Nicholas"; // 语法错误(左右引号必须匹配)
1)字符字面量

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

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

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

var lang = "Java";
lang = lang + "Script";
3)转换为字符串 
(1)toString()

数值、布尔值、对象和字符串值 调用toString()都会返回字符串的一个副本,但 null 和 undefined 值没有这个方法。

var age = 11; 
var ageAsString = age.toString(); // 字符串"11" 
var found = true; 
var foundAsString = found.toString(); // 字符串"true"

在调用数值的 toString()方法时,可以传递一个参数:输出数值的基数。默认以十进制格式返回数值的字符串表示,通过传递基数,toString()可以输出以二进制、八进制、十六进制,乃至其他任意有效进制格式表示的字符串值。

var num = 10; 
alert(num.toString());   // "10" 
alert(num.toString(2));  // "1010" 
alert(num.toString(8));  // "12" 
alert(num.toString(10)); // "10" 
alert(num.toString(16)); // "a"
(2)String()

将任何类型的值转换为字符串。其转换规则如下:

如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果

如果值是null,则返回"null"

如果值是undefined,则返回"undefined"

var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1)); // "10"
alert(String(value2)); // "true"
alert(String(value3)); // "null"
alert(String(value4)); // "undefined"

6. Object

ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型名称来创建。而创建Object类型的实例并为其添加属性和方法,就可以创建自定义对象,如下所示:

var o = new Object();

Object类型所具有的任何属性和方法也同样存在于更具体的对象中。Object的每个实例都具有下列属性和方法。

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

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

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

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

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103392.html

相关文章

  • 数据类型——数据类型简介及之间的转换

    摘要:二类型转换隐式类型转换转换为字符串类型任意类型转换为类型任意类型一个加号加任意类型转换为类型任意类型显式类型转换转换为字符串类型转换为类型将字符串或布尔值转换为整数类型。 内容简介: 一.数据类型简介 ———— 原始类型 ———— 引用类型 二.数据类型之间的转换 一、数据类型简介 数据类型主要分为原始类型(也有称为基本类型/原始值)和引用类型。 1.原...

    codercao 评论0 收藏0
  • 数据类型——数据类型简介及之间的转换

    摘要:二类型转换隐式类型转换转换为字符串类型任意类型转换为类型任意类型一个加号加任意类型转换为类型任意类型显式类型转换转换为字符串类型转换为类型将字符串或布尔值转换为整数类型。 内容简介: 一.数据类型简介 ———— 原始类型 ———— 引用类型 二.数据类型之间的转换 一、数据类型简介 数据类型主要分为原始类型(也有称为基本类型/原始值)和引用类型。 1.原...

    superw 评论0 收藏0
  • 【mysql的设计与优化专题(3)】字段类型与合理的选择字段类型

    摘要:如果描述为字符串,类型的值应该使用连字号作为分隔符分开,而类型的值应该使用冒号作为分隔符分开。类型字段可以从集合中取得一个值或使用值,除此之外的输入将会使在这个字段中插入一个空字符串。 本篇博客稍微有点长,它实际上包括两个内容:一是mysql字段类型的介绍,二是在mysql建表过程中是如何正确选择这些字段类型; 字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整...

    joywek 评论0 收藏0
  • JS专题之数据类型类型检测

    摘要:运算符可以用来检测某个构造函数的属性是否存在于另外一个要检测对象的原型链上。使用方法可以获取到变量的准确的数据类型就能解决基本包装类型的检测错误和的检测不安全。 本文共 1750 字,读完只需 7 分钟 数据类型有哪些? ECMAScript 的数据类型分为简单数据类型(也被称为基本数据类型,原始数据类型): Undefined Null String Number Boolean ...

    since1986 评论0 收藏0
  • 深入Mysql - 谈谈我对数据类型的认识

    摘要:要确保没有低估需要存储的值的范围,更小是相对与数据类型的最大值范围来讲的。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范围的最小类型。整数类型有两个类型的数字整数和实数。列默认为,这与其他的数据类型不一样。 简述 良好的逻辑设计和物理设计是高性能系统的基石,比如反范式设计可以加快某些类型的查询同时也会影响另外一些类型的查询效率,所以我们必须重视Mysql对于数据库的设计(本...

    zhisheng 评论0 收藏0
  • 深入Mysql - 谈谈我对数据类型的认识

    摘要:要确保没有低估需要存储的值的范围,更小是相对与数据类型的最大值范围来讲的。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范围的最小类型。整数类型有两个类型的数字整数和实数。列默认为,这与其他的数据类型不一样。 简述 良好的逻辑设计和物理设计是高性能系统的基石,比如反范式设计可以加快某些类型的查询同时也会影响另外一些类型的查询效率,所以我们必须重视Mysql对于数据库的设计(本...

    SillyMonkey 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<