[TOC]
一、基本数据类型
Number、String、Boolean、Undefined、Null、ES6新增:代表(Symbol)-一种实例是唯一且不可改变的数据类型。
1-1 Number类型
var a=10;
b=a;
b=20;
console.log(a) //10(值)
- 数值范围 ```javascript 最小值:Number.MIN_VALUE, JavaScript 中可表示的最小的数(接近 0,但不是负数),这个值为: 5e-324 最大值:Number.MAX_VALUE, JavaScript 中可表示的最大的数,这个值为: 1.7976931348623157e+308 无穷大:Infinity 无穷小:-Infinity
- 数值判断
```javascript
- NaN:not a number
NaN 与任何值都不相等,包括他本身
- isNaN: is not a number
1-2 String类型
字符串长度
length属性用来获取字符串的长度var str = '前端程序猿 Hello World'; console.log(str.length);
字符串拼接字符串拼接使用 + 连接
console.log(11 + 11); console.log('hello' + ' world'); console.log('100' + '100'); console.log('11' + 11); //拼接字符串 console.log('11' - 3); //隐式转换 console.log('11' * 3); //隐式转换 console.log('male:' + true);
- Undefined类型只有一个值,即undefined。undefined表示一个声明了没有赋值的变量,变量只声明的时候值默认是undefined
- Null类型也只有一个值,即null。null表示一个空,null值表示一个空对象指针。变量的值如果想为null,必须手动设置
两者相比较:
1. 相同点
if 判断语句中,两者都会被转换为false
2. 不同点
2.1 Number转换的值不同,Number(null)输出为0, Number(undefined)输出为NaN
2.2 null表示一个值被定义了,但是这个值是空值
2.3 undefined表示缺少值,即此处应该有值,但是还没有定义
3.注意点:
alert(typeof undefined); //output "undefined"
alert(typeof null); //output "object"
第一行代码很容易理解,undefined的类型为Undefined;第二行代码却让人疑惑,为什么null的类型又是Object
了呢?其实这是JavaScript最初实现的一个错误,后来被ECMAScript沿用下来。在今天我们可以解释为,null即
是一个不存在的对象的占位符,但是在实际编码时还是要注意这一特性。
4.ECMAScript认为undefined是从null派生出来的,所以把它们定义为相等的
alert(null == undefined); //output "true"
二、引用数据类型
- Array,Object,Function 赋值既传递值也传递地址
var obj1 = {age:19} var obj2 = obj1; obj2.name = "我有名字了"; console.log(obj1.name); // 我有名字了
var arr=[1,2,3,4];
obj=arr;
obj.push(5);
console.log(arr); //[1,2,3,4,5]
三、获取变量的类型
- typeof
var age = 18; console.log(typeof age); // 'number'
四、数据类型转换
如何分辨数据类型:
字符串的颜色是黑色的,数值类型是蓝色的,布尔类型也是蓝色的,undefined和null是灰色的
4-1 转换成字符串
toString( )
var num = 5; console.log(num.toString());
String( ) ```javascript String()函数存在的意义:有些值没有toString(),这个时候可以使用String()。比如:undefined和null
var num3=null; console.log(String(num3));
- **拼接字符串方式**
- num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串
<a name="kb6yx"></a>
### 4-2 转换为数值类型
- **Number( )**
```javascript
Number() 可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
parseInt( )
var num1 = parseInt("12.3abc"); // 返回12,如果第一个字符是数字会解析直到遇到非数字结束 var num2 = parseInt("abc123"); // 返回NaN,如果第一个字符不是数字或者符号就返回NaN
parseFloat( )
parseFloat()把字符串转换成浮点数 parseFloat()和parseInt非常相似,不同之处在与 parseFloat会解析第一个. 遇到第二个.或者非数字结束 如果解析的内容里只有整数,解析成整数
+,-,0等运算
var str = '500'; console.log(+str); // 取正 console.log(-str); // 取负 console.log(str - 0); //先转换成数值,再进行运算
4-3 转换为布尔类型
Boolean( )
0 ''(空字符串) null undefined NaN 会转换成false 其它都会转换成true