- 数据的计量单位
1 B(Byte字节) = 8 bit(位)
1 KB(KByte) = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
数据类型
- JS中的六种数据类型
String 字符串 (基本数据类型)
Number 数值 (基本数据类型)
Boolean 布尔值 (基本数据类型)
Null 空值 (基本数据类型)
Undefined 未定义 (基本数据类型)
Object 对象 (引用数据类型)
- 查看数据类型
使用 typeof 操作符可以用来检查数据类型, 会将检查的结果以字符串的形式返回给我们。
使用格式:typeof 数据,例如 typeof 123; typeof num;
console.log(typeof 123); // number
var num = 10;
console.log(typeof num); // number
-
String字符串
字符串需要使用 ' 或 " 括起来。
相同引号不能嵌套,不同引号可以嵌套。
var str1 = "hello";
var str2 = 'world';
var str3 = "hello "world""; // 错误
var str4 = 'hello 'world ''; // 错误
var str5 = "hello 'world'"; // 正确
var str6 = 'hello "world"';// 正确
// 不想''和 "" 混用,可以用转义字符
console.log('我说:"今天天气不错"'); // 我说:"今天天气不错"
console.log("我说:\"今天天气不错\"");
/*
* \" 表示 "
* \' 表示 '
* \n 表示 换行
* \t 表示 制表符
* \\ 表示 \
* */
-
Number类型
在JS中所有的数值都是Number类型(整数和小数)。
var num1= 123;
var num2= 3.14;
console.log(typeof num1); // number
console.log(typeof num2); // number
// 浮点数计算可能得到不精确结果
console.log("0.1 + 0.2 = " + a); // 0.30000000000000004
最大值:Number.MAX_VALUE
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
最小值(大于0的最小值):Number.MIN_VALUE
console.log(Number.MIN_VALUE); // 5e-324
无穷大:Infinity, 如果超过了最大值就会返回该值
console.log(Number.MAX_VALUE + Number.MAX_VALUE); // Infinity
console.log(typeof Infinity); // number
无穷小:-Infinity, 如果超过了最小值就会返回该值
console.log(typeof -Infinity); // number
NaN :非法数字(Not A Number),JS中当对数值进行计算时没有结果返回,则返回NaN
console.log("abc" * "abc"); // NaN
console.log(typeof NaN); // number
-
Boolean 布尔值
布尔型只能够取真(true)和假(false)两种数值。
注意:
1)任何非零数值都是true, 包括正负无穷大, 只有0和NaN是false;
2)任何非空字符串都是true, 只有空字符串""是false;
3)任何对象都是true, 只有null 和 undefined 是 false;
console.log(Boolean(0)); // false
console.log(Boolean(1)); // true
console.log(Boolean(-1)); // true
console.log(Boolean(Infinity)); // true
console.log(Boolean(-Infinity)); // true
console.log(Boolean(NaN)); // false
console.log(Boolean("abc")); // true
console.log(Boolean("")); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(null)); // false
-
Null
Null 类型表示的是一个空的对象,只有一种值是 null。
typeof null 会返回一个Object。
var test1= null;
console.log(typeof test1); // Object
-
Undefined
Undefined 类型,表示变量未赋值,这种类型只有一种值就是undefined。
typeof 对没有初始化和没有声明的变量都会返回undefined。
var value1 = undefined;
console.log(typeof value); //结果是undefined
var value2;
console.log(typeof value2); //结果是undefined
undefined值实际上是由null值衍生出来的,所以如果比较undefined和null是否相等,会返回true。
var test1 = null;
var test2 = undefined;
console.log(test1 == test2); // true
console.log(test1 === test2); // false
数据类型转换
- 将其它类型转换为字符串
- 调用被转换数据类型的toString()方法。
var num = 100;
var num1 = num.toString();
console.log(typeof num); // number
console.log(typeof num1); // string
var b = true;
var b1 = b.toString();
console.log(typeof b); // boolean
console.log(typeof b1); // string
var n = NaN;
var n1 = n.toString();
console.log(typeof n); // number
console.log(typeof n); // string
注:
1)null 和 undefined 这两个值没有toString()方法。
2)toString() 方法不会影响到原变量,它会将转换的结果返回。
数值类型的toString(),可以携带一个参数,输出对应进制的值。
var num = 20;
var res1 = num.toString(2);
var res2 = num.toString(8);
var res3 = num.toString(10);
var res4 = num.toString(16);
console.log(res1); // 10100
console.log(res2); // 24
console.log(res3); // 20
console.log(res4); // 14
- 调用String()函数
有些值没有toString(),这个时候可以使用String()。比如:undefined和null。
对于Number和Boolean实际上就是调用的toString()方法
var res1 = String(10);
console.log(typeof res1); // string
var res2 = String(true);
console.log(typeof res2); // string
对于null 和 undefined,就不会调用toString()方法(因为没有这个方法),而是在内部生成一个新的字符串。
var res3 = String(undefined);
console.log(typeof res3); // string
var res4 = String(null);
console.log(typeof res4); // string
- 将被转换的数据和 + "" 连接到一起
任何数据和 +"" 连接到一起都会转换为字符串,内部实现原理和String()函数一样。
var res1 = 10 + "";
console.log(typeof res1); // string
var res2 = true + "";
console.log(typeof res2); // string
var res3 = undefined + "";
console.log(typeof res3); // string
var res4 = null + "";
console.log(typeof res4); // string
- 将其它类型转换为Number类型
- 调用Number()函数
- String --> Number
1)如果是纯数字的字符串,则直接将其转换为数字。
var res1 = Number("123");
console.log(typeof res1); // number
2)如果字符串中有非数字的内容,则转换为NaN。
var res2 = Number("123ab");
console.log(res2); // NaN
3)如果是空字符串或全是空格的字符串,则转换为0。
var res3 = Number("");
console.log(res3); // 0
var res4 = Number( " ");
console.log(res4); // 0
- Boolean --> Number
true 转成 1
false 转成 0
var res5 = Number(true);
console.log(res5); // 1
var res6 = Number(false);
console.log(res6); // 0
- Null --> Number
null 转成0
console.log(Number(null)); // 0
- Undefined --> Number
console.log(Number(undefined)); // NaN
- parseInt() 方法和 parseFloat() 方法
Number()函数中无论混合字符串是否存在有效整数都会返回NaN,利用 parseInt() / parseFloat() 可以提取字符串中的有效整数。
parseInt() / parseFloat(),两者之前的区别是前者只能提取整数,后者可以提取小数。
- parseInt()提取字符串中的整数
1)从第一位有效数字开始, 直到遇到无效数字;
2)如果第一位不是有效数字, 什么都提取不到, 会返回NaN;
3)第一个参数是要转换的字符串,第二个参数是要转换的进制;
var res7 = parseInt("300px");
console.log(res7); // 300
var res8 = parseInt("300px250");
console.log(res8); // 300
var res9 = parseInt("300.2px");
console.log(res9); // 300
var res10 = parseInt("abc123");
console.log(res10); //NaN
var res11 = parseInt("");
console.log(res11); // NaN,Number("")返回0
- parseFloat提取字符串中的小数
1)会解析第一个. 遇到第二个.或者非数字结束;
2)如果第一位不是有效数字, 什么都提取不到;
3)不支持第二个参数,只能解析10进制数;
4)如果解析的内容里只有整数,解析成整数;
var res12 = parseFloat("20.5px");
console.log(res11); // 20.5
var res13 = parseFloat("20.5.5.5px");
console.log(res12); // 20.5
var res14 = parseFloat("abc20.5");
console.log(res13); // NaN
var res15 = parseFloat("20abc");
console.log(res14); // 20
对非String使用parseInt()或parseFloat(), 会先将其转换为String然后在操作。
var res16 = parseInt(true); // 这里相当于parseInt("true");
console.log(res16); // NaN
- 利用算数运算
任何类型与Number 进行 减、乘、除、取模运算,都会先转为Number。
var a = "10";
var res17 = a - 0;
console.log(typeof res17); // number
var res18 = a * 1;
console.log(typeof res18); // number
var res19 = a / 1;
console.log(typeof res19); // number
- 利用 + 正号
正号运算时,对于非Number类型的值,会将先转换为Number,然后再运算
。
var res = +true;
console.log(res); // 1
console.log(typeof res); // number
- 将其它类型转换为Boolean
- 使用Boolean()函数
- Number --> Boolean
0 和 NaN 为false,其他数字为true
console.log(Boolean(123)); // true
console.log(Boolean(0)); // false
console.log(Boolean(NaN)); // false
- String --> Boolean
"" 为 false,其他字符串为true
console.log(Boolean("abc")); // true
console.log(Boolean(" ")); // true
console.log(Boolean("")); // false
- Null --> Boolean
null 转布尔类型为 false
console.log(Boolean(null)); // false
- Undefined --> Boolean
undefined 转布尔类型为 false
console.log(Boolean(undefined)); // false
- 利用逻辑非表达式
var num = 10;
num = !!num;
console.log(num); // true
- 进制转换
- 二进制转换八进制
00 001 001
结果: 0 1 1 = 011
console.log(parseInt("011", 8)); // 十进制 9
- 二进制转换十六进制
0001 1011
结果: 1 b = 0x1b
console.log(parseInt("0x1b", 16));// 十进制 27
网友评论