一、数据类型
JavaScript的数据类型共分两类:简单数据类型 (也称原始数据类型或基本数据类型)和复杂数据类型(也称引用数据类型或对象类型)。
2.1 简单数据类型
简单数据类型共分5种:Number、Boolean、String、Null、Undefined (ECMAScript6新增:Symbol)
数据类型 | 数据值 | 说明 |
---|---|---|
Undefined | undefined | 当声明一个变量但是并没有赋值时,变量的类型是Undefine类型 |
Null | null | 对象指针为空 |
Boolean | true false | true\false两个值都必须小写 |
Number | 10 3.14 3. .5 整数与浮点数 | NaN ---- not a number本应该返回数值型数据的函数,如果返回的值不是数值型测返回NaN isNaN()---不是数字返回true 是数字返回false |
String | “Hello” ‘Hello’ “a” ’a’ | 后续学习 |
Object | 对象 | 后续学习 |
2.1.1 Number类型
数值类型共分4种值:整数、浮点数、无穷大、NaN。
对数值来说,最常见的数值字面量是10进制。比如:20, 30, 5.5 这些值都是用10进制表示的。
- 整数: 对整数来说,我们一般使用的是10进制,其实还有8、16进制等。例如:
var num = 25; // 10进制的25
alert(num); //弹出:25
- 浮点数: ** 所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。浮点数直接量一般有两种写法:直接带小数点的和使用科学计数法。**
var f1 = 3.14; // 带小数点的直接量写法
var f2 = 3.158899e5; //科学计数法: 表示 3.158899 * 10^5
- **无穷大(Infinity): ** ECMAScript并不能储存所有的数,所以能表示的数有个范围。所能表示的数最大值和最小值都保存在Number这个内置对象中(后面会详细介绍什么是对象。)
alert(Number.MAX_VALUE);
alert(Number.MIN_VALUE);
//如果数值超出了最大值和最小值,则用Infinity和-Infinity表示。
alert(1.1 / 0); //弹出:Infinity
alert(-1.1 / 0); //弹出:-Infinity
- **NaN( not a number 不是个数): ** 表示不是一个数字,当0/0 的时候不是无穷大,而是NaN。或者把一个非数字形式的字符串转换成数字时都会返回NaN。例如:
alert(0 / 0); //弹出:NaN
alert(parseInt("60")); //弹出:60 说明:parseInt("");可以把字符串形式的数字转换成Number
alert(parseInt("a")); //弹出:NaN
//注意:NaN是个非常特别的东东。因为即使他自己和自己都不相等。
var v = 0 / 0;
alert(v == v); //弹出false
alert(v != v); //弹出true。 所以:可以通过这种方式来判断这个数是否为NaN
/*
另外:isNaN()函数如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,
则 返回 false。
*/
alert(isNaN(3));//返回false
alert(isNaN("3")); //返回false
alert(isNaN("blue"));//返回true
alert(isNaN(true));//返回false . true可以转换成数字1
alert(isNaN(null));//返回false null可以转换为数字0
alert(isNaN(undefined));//返回true
2.1.2 Boolean类型
Boolean类型的值是程序中用的很多的一种类型。它只有两个值:true和false。true表示逻辑上的对/正确,false表示逻辑上的错。
2.1.3 String类型
String指的是用 ""(双引号) 或 ''(单引号) 括起来的字符序列。字符序列可以由0个或多个字符组成。
例如:”123” “a” ‘name’ ‘blue’ ’nihao’ ’xiaohong‘ ”nihao”。说明:
1、单引号或双引号要匹配,不能一边用双引号,一边用单引号 ,左右符号要匹配。
2、JavaScript统一每个字符使用Unitcode码来进行编码,每个字符占16位(2个字节)。
3. 在其他语言中多用单引号表示一个字符,双引号表示字节。但是对JavaScript来说,不存在字符类型的数据。
4. 有些字符不可见或有特殊意义,比如换行符,制表符, 双引号等,则 JavaScript 提供了相应的转意字符,来表示这些不可见字符。见下表:
代码 | 输出 |
---|---|
' | 单引号 |
" | 双引号 |
& | 和号 |
\\ | 反斜杠 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\b | 退格符 |
\f | 换页符 |
2.1.4 Undefined
Undefined 类型只有一个值,即特殊的 undefined 。在使用 var 声明变量但未对其加以初始化时,
这个变量的值就是 undefined ,例如:
var v;
alert(v); //弹出:undefined。 变量v声明但是没有赋值初始化,则为undefined
alert(m); //m没有定义,直接使用会发生错误。
2.1.5 Null
- Null 类型是第二个只有一个值的数据类型,这个特殊的值是 null ( n是小写)。从逻辑角度来看, null 值表
示一个空对象指针。
- 值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
说明:
尽管这两个值相等,但它们的含义不同。
undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象。
如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是null。
alert(null == undefined); // 弹出: true。 待讲完面向对象在来理解会更加清晰。大家目前只需要了解即可。
2.2 复杂数据类型
复杂数据类型又称之为引用数据类型。主要包括三种:对象(object)、函数(function)和数组(array)。
不过,从本质来看,这三种都属于对象。
关于复杂数据类型,我们在面向对象部分重点详细介绍。
二、数据类型转换
数据类型转换有两种转换:自动转换和强制转换。
1. 自动类型转换:
在解释执行的过程中,会根据需要进行相应的自动类型转换。比如:需要一个Boolean类型的值,而现在是一个字符串,则会根据相应的规则把字符串自动转换为Boolean值。
1、转换成布尔类型
undefined —> false
null —> false
数值 0,0.0,NaN —> false 其他数值—> true
字符串 ""—>false "etef" —> true
其他对象—> true
总结:存在的东东,转换成true, 不存在的东东转换成flase
2、转换成数值类型
undefined —> NaN
null —> 0
字符串——>数值—> "34234"—>34234, "324sdfs3423" —> NaN, "" —> 0
布尔类型——>数值 true->1 false->0
总结:能转成数字的就转成对应的数字。不能转成数字的要么0或1要么NaN
3、转换成字符串类型
undefined —>"undefined"
null —>"null"
布尔类型 true —>”true” false —>"false"
数值类型转成字符串 12321 —>"12321" NaN —>"NaN"
总结:字面值是什么就转成什么
2. 强制类型转换。
//1、其他类型转成成字符串。
var a = 10;
alert(a + ""); // 直接和一个长度为0的空字符链接
alert(a.toString()); //调用这个变量的toString()方法
alert(String(a)); //使用String转型函数
//2、字符串转数字。
var s = "123";
alert(parseInt(s));
alert(parseFloat(s));
/*
注意:使用parseXxx转换
1、转换为数字的时候,会忽略前面的空格
2、如果是数字开头然后是字母,则会只转前面的数字
3、如果是字母开头则返回NaN
4、在使用parseInt的时候,可以传入第二个参数,表示这个数的进制,然后就转换成对应的10进制数返回。
*/
alert(parseInt(" 12")); //忽略前面的空白字符
alert(parseInt("12ab3"); //弹出:12. 从字母后面的统统忽略掉
alert(parseInt("a123")); // 弹出:NaN
alert(parseFloat("-41.33b89")) // -41.33
//3、使用转型函数互转(暂时先了解) var为一个变量或常量都可以
String(var);//其他类型转字符串
Number(var); //其他类型转数字
Boolean(var); // 其他类型转布尔
网友评论