JavaScript 数据类型种类
JavaScript中有6种数据类型,其中有五种简单的数据类型
-
Undefined,null,布尔,数值和字符串.还有一种复杂数据类型Object
-
数值(Number):整数和小数(比如1和3.14).
var a=1;//数值型 console.log(typeof a);//number
-
字符串(String):字符组成的文本(比如"Hello World").
var c="Hello";//字符串 console.log(typeof c);//String
-
布尔值(Boolean):true(真)和false(假)两个特定值
var b=true;//布尔型 console.log(typeof b);//boolean
-
Undefined:表示"为定义"或不存在,即此处目前没有任何值.
var d;//为定义 console.log(typeof d);//undefined
-
Null:表示空缺,即此处应该有一个值,但目前为空
var e=null;//null console.log(typeof e);//object
-
对象(Object)(引用数据类型),各种值组成的大集合
1. 对象(object){"name":"zhangsan","age":"18"} 键值对中的键要加引号,在字符串转换js对象时候 2. 数组(array){1,2,3} 3. 函数(function) function test( ) { }
var obj = {}; // 空对象 var obj2 = {uname:"zhangsan"}; var obj3 = new Object(); obj3.age=18; console.log(typeof obj); // object console.log(typeof obj2); // object console.log(typeof obj3); // object //函数 function test(str){ } console.log(typeof test);//function
typeof操作符
-
typeof 操作符是用来检测数据类型的
-
typeof null返回的是object字符串
-
函数不是数据类型,但是也可以使用typeof操作符返回字符串
typeof操作符可以操作变量也可以操作字面量
注意:函数在JavaScript中是对象,不是数据类型,使用使用typeof区分function和object是必要的
-
undefined
1. undefined类型的值是undefined.
2. undefined是一个表示"无"的原始值,表示值不存在
3. 出现undefined的常见情况
1. 当生命一个变量而没有初始化,这个变量的值就是undefined
2. 当函数需要形参,但为传递实参时
3. 函数没有返回值,但定义了变量接收
null
1. null类型是只有一个值的数据类型,即特殊的值null,它表示空值,即该处的值现在为空
2. 它表示一个空对象引用
3. 使用null类型值时注意以下几点
1. 使用typeof操作符测试null返回object字符串
2. undefined派生自null;所以等值比较返回值是true.所以,为初始化的变量和赋值为null变量想等
// undefined 派生自 null
console.log(undefined == null); // true
var ab; // 只声明未赋值返回undefined
console.log(ab == null); // true
数值型
数值型包含两种果蔬汁,整型和浮点型
-
使用数字(整型和浮点型)都是以64位浮点数形式储存,所以,JS中1和1.0相等
1. 而且1加上1.0得到的还是一个整数,浮点数最高精确是17位小数,由于浮点数运算时可能不精确,尽量不要使用浮点数做判断。
- 在储存数值型数据时自动将可以转换为整型的浮点数值转为整型.
// 浮动性自动转整型 console.log(1 + 2.0); // 3 var n = 5.0; console.log(n); // 5
-
对于过大或过小的数值,可以使用科学计数法来表示
-
Infinity ,-Infinity
- 超过了表数范围,出现Infinity(正无穷)或者 -Infinity(负无穷)
- isFinite( )函数可以确定是否超出范围
- true:没有超出;false:超出了
// 数值过大或过小会使用科学计数法显示 var num2 = 4.12e9; console.log(num2);//4120000000 console.log(0.0000000412);//4.12e-8 // 正无穷和负无穷 console.log(100e1000);//Infinity console.log(-100e1000);//-Infinity console.log(1 / -0 );// 除以负 0 得到-Infinity console.log(1 / +0); // 除以 0 得到 Infinit // isFinite() console.log(isFinite(1)); //true console.log(isFinite(100e1000)); //fasle
-
NaN
- 表示非数值(Not a Number):是一个特殊的值
- 如:将字符串解析成数字出错的场合.
- console.log(parseInt(“abc”));//parseInt 方法将字符解析成数值,但若无法解析,返回NaN
- 注意:
- NaN不等于任何值,包括它自身,因为它不是一个值
- NaN与任何数(包括它自己)的运算,得到的都是NaN
- isNaN()可以用来判断一个值是否为NaN
- true:不是数字;false:是数字
// NaN console.log(parseInt("123")); // 123 console.log(parseInt("abc")); // NaN console.log(NaN == NaN); // false console.log(parseInt("abc") + 1); // NaN // isNaN()可以用来判断一个值是否为 NaN console.log(isNaN(parseInt("123"))); // false console.log(isNaN(parseInt("abc"))); // true
字符串
1. 使用' '或" "引起来,如:'sxt',"good"
2. 使用加号'+'进行字符串的拼接:如:console.log('hello'+'everybody');
console.log('Hello' + " everyone");
对象
instanceof 运算符
1. typeof操作符对数组(array)和对象(object)的显示结果都是object,那么可以利用instanceof运算符,它可用于判断一个变量是否某个对象的实例
// instanceof 运算符
var o = {};
var ar = [];
console.log(o instanceof Object); // true
console.log(ar instanceof Array); // true
JavaScript类型转换
- parseInt()
- parseInt()在转换之前,首先会分析该字符串,判断位置为0处的字符,判断他是否是个有效数字,如果不是,贼直接返回NaN,不在继续,如果是则继续,知道找到非字符
- parseInt()方法还有基模式,可以吧二进制,八进制,十六进制或其他任何进制的字符串转换成整数,基是由pareInt()方法的第二个参数指定的
- 如果十进制数包含前导0,那么最好采用基数10,这样才不会以外的得到八进制的值
- parseFloat()
- parseFloat()方法与ParseInt()方法的处理方式相似,但是parseFloat()可以识别第一个小数点
// parseInt()
console.log(parseInt("123ab1c")); // 123
console.log(parseInt("123.4.5ab1c")); // 123
console.log(parseInt("0xA")); //returns 10
console.log(parseInt("22.5")); //returns 22
console.log(parseInt("blue111")); //returns NaN
console.log(parseInt("AF", 16)); //returns 175
console.log(parseInt("10", 2)); //returns 2
console.log(parseInt("10", 8)); //returns 8
console.log(parseInt("10", 10)); //returns 10
console.log(parseInt("010")); //returns 8
console.log(parseInt("010", 8)); //returns 8
console.log(parseInt("010", 10)); //returns 10
console.log("==========================");
// parseFloat()
console.log(parseFloat("123ab1c")); // 123
console.log(parseFloat("123.4ab1c")); // 123
console.log(parseFloat("0xA")); //returns 10
console.log(parseFloat("22.5")); //returns 22
console.log(parseFloat("blue111")); //returns NaN
-
显示转换
1. toString()函数将内容转换为字符串形式,其中Number提供的 2. toStirng()函数可以将数字以指定的进制转换为字符串,默认为十进制 3. Number还提供了toFixed()函数将根据小数点后指定位数将数字转为字符串,四舍五入
console.log("====================显式转换=========="); var data = 10; console.log(data.toString()) console.log(data.toString(2)) data = 1.4; console.log(data.toFixed(0)); data = 1.49; console.log(data.toFixed(1)); data = true; console.log(data.toString());
-
强制转换
-
JS为Number,Boolean,String 对象提供了构造方法,用于强制转换其他类型的数据,此时操作的是整个数据,而不是部分.
-
console.log("===================强制转换=========="); console.log(Number("1")); console.log(Number("1.4")); console.log(Number("123aabc")); console.log(Number("abc")); console.log(Number(true)); console.log(Number(false)); console.log(Number(19)); console.log(Number(new Object())); console.log(Number(new Array()));
-
-
-