数据类型: 指我们储存在内存的数据的类型。
js语言的每一个值,都属于某一种数据类型。
通常分为两大类:基本数据类型和复杂数据类型。
基本数据类型:
1、字符串类型(string)
文本,被单引号或双引号包裹的所有内容
2、数值类型 (number)
整数和小数,一切数字都是数值类型
3、布尔值(boolean)
表示真伪的两个特殊值 true(真) false(假)
4、undefined类型 (undefined)
只有一个就是undefined,表示未定义,没有值的意思
5、null类型 (null)
只有一个就是null,表示空值,此处的值为空。
typeof运算符
typeof关键字用于判断一个值是什么数据类型
typeof运算符返回一个值的数据类型
typeof 123 //numbertypeof '123' //stringtypeof false //booleantypeof undefined //undefined用typeof判断一个没有赋值的变量会返回undefinedvar i;typeof i //undefined注:null的数据类型是objecttypeof null //object
null和undefined
null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。
undefined表示“未定义”,下面是返回undefined的典型场景
// 变量声明了,但没有赋值var i;i // undefined// 调用函数时,应该提供的参数没有提供,该参数等于 undefinedfunction f(x) {return x;}f() // undefined// 对象没有赋值的属性var o = new Object();o.p // undefined// 函数没有返回值时,默认返回 undefinedfunction f() {}f() // undefined
布尔值
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
下列运算符会返回布尔值:
- 前置逻辑运算符:
!(Not) - 相等运算符:
===,!==,==,!= - 比较运算符:
>,>=,<,<=
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefinednullfalse0NaN""或''(空字符串)
数值
特殊数值
NAN
NAN:js中的特殊数值,表示 ‘ 非数字 ‘(not a number)。
NAN不是独立的数据类型,数据类型属于number。
//NAN不等于任何值,包括它自己NAN === NAN // false
判断数据类型:isNAN:可以使用 isNaN 这个方法来判断一个变量是不是数字。isNaN方法可以用来判断一个值是否为NaN。
isNaN(NaN) // trueisNaN(123) // false
lnfinity
Infinity表示“无穷”,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity。Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。Infinity大于一切数值(除了NaN),-Infinity小于一切数值(除了NaN)Infinity与NaN比较,总是返回false。
数据类型转换
转换为数字型:
Number(变量)- 可以把一个变量强制转换成数值类型
- 可以转换小数,会保留小数
- 可以转换布尔值
- 遇到不可转换的都会返回 NaN
parseInt(变量)- 从第一位开始检查,是数字就转换,知道一个不是数字的内容
- 开头就不是数字,那么直接返回 NaN
- 不认识小数点,只能保留整数
parseFloat(变量)- 从第一位开始检查,是数字就转换,知道一个不是数字的内容
- 开头就不是数字,那么直接返回 NaN
- 认识一次小数点
- 除了加法以外的数学运算
【注】toString()和String()的区别:
1、语法中的区别:toString()的括号内不能包含参数,需要以 变量.toString() 的形式使用;String()的参数需要包含在括号内,使用语法为String(参数)。
2、转换值的区别:toString()不能处理转换的值是null或undefined的情况,它遇到这种情况下会在console中报错。
而String()是可以处理转换的值是null或undefined的参数,转换的值是null的返回值是null字符串,转换的 值是undefined返回值是undefined字符串。String()处理未定义的变量,返回值为undefined的字符串。
