Undefined、Null、Number、String、Object(ES6新增Symbol)
typeof null //object
var message;
typeof message //undefined
typeof age //undefined(未申明)
null == undefined //true(nudefined派生自null值)
转换为布尔值为false:
Boolean('') //false
Boolean(0) //false
Boolean(NaN) //false
Boolean(null) //false
Boolean(undefined) //false
ECMAScript使用IEEE754格式表示整数和浮点数值-----浮点值计算会有误差
最大值:Number.MAX_VALUE = 1.7976931348623157e+308
最小值:Number.MIN_VALUE = 5e-324
正无穷:+Infinity (Number.POSITIVE_INFINITY)
负无穷:-Infinity (Number.NEGATIVE_INFINITY)
判断是否在最大值与最小值之间:isFinite()
任何涉及NaN的操作都会返回NaN,NaN与任何值都不相等,包括NaN本身
判断一个值是否“不是数值”:isNaN() (会尝试将值转换成数值)
数值转换:
Number(true) = 1;
Number(false) = 0;
Number(null) = 0;
Number(undefined) = NaN;
Number('') = 0;
Number('-8.5') = -8.5;
Number('00011') = 11;
Number('15') = 15;
Number('0xf') = 15;
Number(015) = 13;
Number('ab3c') = NaN;
parseInt('1234blue') = 1234;
parseInt('') = NaN;
parseInt('015') = 15;
parseInt('0xf') = 15;
parseInt(015) = 13;
parseInt(22.5) = 22;
parseInt('AF', 16) = 175;
parseInt('10', 8) = 8;
parseInt('10', 10) = 10; //推荐使用
parseFloat('1234blue') = 1234;
parseFloat('0xAF') = 0;
parseFloat(0xAF) = 175;
parseFloat('22.34.5') = 22.34;
parseFloat('0908.5') = 908.5;
parseFloat('3.125e7') = 31250000;
字符字面量:
\n //换行
\b //退格
\r //回车
\\ //斜杠
\xnn //以十六进制表示的一个字符(其中n为0~F)
\unnnn //以十六进制表示的一个Unicode字符(其中n为0~F)
转换为字符串:
1、toString() //null和undifined没有这个方法
10.toString() = '10';
10.toString(2) = '1010';
10.toString(8) = '12';
10.toString(10) = '10';
10.toString(16) = 'a';
true.toString() = 'true';
2、String() //这个函数能将任何类型的值转换成字符串
String(10) = '10';
String(null) = 'null';
String(undefined) = 'undifined';
String(true) = 'true';
object类型(每个实例都有的属性和方法):
constructor //保存着用于创建当前对象的函数
hasOwnProperty(propertyname) //用于检查给定的属性在当前对象实例中(而不是实例的原型中)是否存在
isPrototypeOf(object) //用于检查传入的对象是否是当前对象的原型
propertyIsEnumerable(propertyname) //用于检查给定的属性是否能够使用for-in语句来枚举
toLocaleString() //返回对象的字符串表示,该字符串与执行环境的地区对应
toString() //返回对象的字符串表示
valueOf() //返回对象的字符串、数值或布尔值。通常与toString() 方法的返回值相同
位操作符:
1、~(按位非) //返回数值的反码-----在最底层执行操作,因此速度更快
~25 = -26;
2、&(按位与) //将两个数值的每一位对齐,对相同位置上的两个数执行AND操作
25 & 3 = 1;
3、|(按位或) //将两个数值的每一位对齐,对相同位置上的两个数执行OR操作
25 | 3 = 27;
4、^(按位异或) //将两个数值的每一位对齐,对相同位置上只有一个1时才返回1
25 ^ 3 = 26;
5、<<(左移) //将数值的所有位向左移动指定的位数-----左移不会影响操作数的符号位
2 << 5 = 64;
-2 << 5 = -64;
6、>>(有符号右移) //将数值的所有位向右移动指定的位数-----保留符号位
64 >> 5 = 2;
7、>>>(无符号右移) //将数值的所有位向右移动指定的位数-----负数符号位会改变
64 >>> 5 = 2;
-64 >>> 5 = 134217726;
0 * Infinity = NaN;
Infinity * Infinity= Infinity;
Infinity * 1 = Infinity;
Infinity * -1 = -Infinity;
Infinity / Infinity = NaN;
Infinity / 0 = NaN;
Infinity / 1 = Infinity;
Infinity / -1 = -Infinity;
1 / Infinity = 0;
Infinity % Infinity = NaN;
Infinity % 0 = NaN;
12 % Infinity = 12;
12 % 0 = NaN;
Infinity + Infinity = Infinity;
-Infinity + -Infinity = -Infinity;
Infinity + -Infinity = NaN;
Infinity - Infinity = NaN;
-Infinity - -Infinity = NaN;
Infinity - -Infinity = Infinity;
-Infinity - Infinity = -Infinity;
==(相等)-----存在类型转换
null == undefined; //true
null == 0; //false(在比较相等性之前,不能将 null和undefined转换成其他任何值)
undefined == 0; //false(在比较相等性之前,不能将 null和undefined转换成其他任何值)
===(全等)-----不存在类型转换
null === undefined; //false