1.ECMAScript有六种数据类型:
五种简单数据类型:Numeber,String,Boolean,Null,Undefined
一种复杂数据类型:Object
2.typeof 操作符可以返回六种类型:
'number','string','boolean','undefined','object','function'
'undefined':该值未定义
'string':该值是字符串
'boolean':该值是布尔值
'undefined':该值未定义
'object':该值是对象或者null
'function':该值是函数
————————————————————————————————————————————————————————
NaN知识点
NaN:用于表示一个本来要返回数值的操作数未返回数值的情况。(没有返回数值所以返回了NaN)
NaN有两个特点。
①任何涉及 NaN 的操作(例如 NaN /10)都会返回 NaN
②NaN 与任何值都不相等,包括 NaN 本身。
另外 0除以 0 才会返回 NaN,正数除以 0 返回 Infinity,负数除以 0返回-Infinity。
isNaN() 函数:任何不能被转换为数值的值都会导致这个函数返回 true
alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值 10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值 1)
————————————————————————————————————————————————————————
3.js的强制类型转换(Number、parseInt、parseFloat、String、Boolean)
Number(): var num2 = Number(""); // 0
parseInt(): var num4 = parseInt(22.5); // 22
parseFloat(): var num3 = parseFloat("22.5"); //22.5
String(): alert(String(10)); // "10"
Boolean() : let mes = Boolean('hello') // true
————————————————————————————————————————————————————————
Number类型知识点
首先回顾一下二进制,八进制,十进制,十六进制
二进制:是指用0和1两个数码来表示的数。基数是2。eg.1001001。
八进制:一种以8为基数的计数法,采用0,1,2,3,4,5,6,7八个数字。前缀为0,是无符号数(无正负)。
十进制:日常生活中用的最多。采用0—9十个数字。
十六进制:由0—9,A—F(代表10—15)组成,前缀为0X或0x。
在js里面
十进制: var intNum = 55。// 整数
八进制:第一位必须是0,如果字面值中的数值超出了范围,忽略前导0,后面数值当做十进制解析。
var octalNum1 = 070; // 八进制的 56
var octalNum2 = 079; // 无效的八进制数值——解析为 79
十六进制:前两位必须是 0x。var hexNum1 = 0xA; // 十六进制的 10
1) 浮点数值
注意以下几种特殊情况
var floatNum3 = .1; // 有效,但不推荐
var floatNum3 = .1; // 有效,但不推荐
var floatNum2 = 10.0; // 整数——解析为 10
var floatNum = 3.125e7; // 等于 31250000 即3.125 X 10^7
var floatNum = 3e-7; // 等于 0.0000003 即3 X 10^-7
注意一个特殊情况
浮点数值的最高精度是 17 位小数,例如,0.1 加 0.2的结果不是 0.3,而是 0.30000000000000004。
2) 数值范围
Infinity (正无穷),-Infinity (负无穷)
使用 isFinite() 函数。这个函数在参数位于最小与最大数值之间时会返回 true。
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result)); //false
3) NaN(见上面)
4) 数值转换
把非数值转换为数值: Number() (用于任何数据类型)、 parseInt() 和 parseFloat() (用于把字符串转换成数值)
Number() 规则:(只说典型的情况)
如果是 null 值,返回 0。
如果是 undefined ,返回 NaN 。
如果是字符串,遵循下列规则:
-八进制忽略0当十进制看,如“011”变成11
-十六进制则转成十进制整数值
-空字符串当成0
如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN ,则调用对象的 toString() 方法,然后再次依照前面的规则转换返回的字符串值。
parseInt() 规则:(处理字符串成整数)
忽略前导0,且会忽略字符串前面的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者负号, parseInt()就会返回 NaN ,直到解析完所有后续字符或者遇到了一个非数字字符就会结束。
用 parseInt() 转换空字符串会返回 NaN ( Number() 对空字符返回 0)
var num1 = parseInt("1234blue"); // 1234
var num2 = parseInt(""); // NaN
var num3 = parseInt("0xA"); // 10(十六进制数)
var num4 = parseInt(22.5); // 22
var num5 = parseInt("070"); // 70(八进制数)
var num6 = parseInt("70"); // 70(十进制数)
var num7 = parseInt("0xf"); // 15(十六进制数)
避免错误解析,需要明确指定基数 var num3 = parseInt("10", 10); //10 (按十进制解析)
parseFloat() 规则:(处理字符串成浮点数)
与parseInt类似,但是,字符串中的第一个小数点是有效的,第二个小数点无效。
忽略前导0,只解析十进制。十六进制会被转换成0,没第二个参数的写法。如可解析为整数则返回整数。
var num1 = parseFloat("1234blue"); //1234 (整数)
var num2 = parseFloat("0xA"); //0
var num3 = parseFloat("22.5"); //22.5
var num4 = parseFloat("22.34.5"); //22.34
var num5 = parseFloat("0908.5"); //908.5
var num6 = parseFloat("3.125e7"); //31250000
————————————————————————————————————————————————————————
4.JS隐式类型转换(+、–、==、!)
在使用算术运算符时,运算符两边的数据类型可以是任意的,比如,一个字符串可以和数字相加。之所以不同的数据类型之间可以做运算,是因为 JavaScript 引擎在运算之前会悄悄的把他们进行了隐式类型转换。
5.null 和 undefined 的区别?
undefined:
①使用 var 声明变量但未对其加以初始化时,这个变量的值就是 undefined。 var message;//undefined
②对未初始化和未声明的变量执行 typeof 操作符都返回了 undefined 值。
var message; // 这个变量声明之后默认取得了 undefined 值
// 下面这个变量并没有声明
// var age
alert(typeof message); // "undefined"
alert(typeof age); // "undefined"
③转为数字是NaN
此外:
- 变量被声明了,但没有赋值时,就等于undefined。
- 对象没有赋值的属性,该属性的值为undefined。
- 函数没有返回值时,默认返回undefined
null:
①表示一个空指针对象。 let car = null; alert(typeof car); //"object"
②如果变量用于保存对象,则应初始化为null。
if(car != null){
//对car对象执行某些操作
}
③ undefined 值是派生自 null 值的 alert(null == undefined); //true alert(null === undefined); //false
④转为数字是0