JS-数据类型
-
JS中,字面量的数据类型一共有6种:
—
String
字符串—
Number
数值—
Boolean
布尔值—
Null
空值—
Undefined
未定义—
Object
对象其中
String
Number
Boolean
Null
和Undefined
属于基本数据类型,Object
属于引用数据类型; -
String
字符串—在JS中使用字符串需要使用引号引起来,单引号和双引号都可以,成对使用,不能单双引号混合使用;
—引号不能嵌套使用,双引号里面不可以放置双引号,单引号里面不可以放置单引号;
—可以使用
\
作为转义字符,当输出一些特殊符号时,可以使用\
进行转义,例如:表示双引号:\"
\n
:表示换行;
\t
:表示制表符(Tab);
\\
:表示\
-
Number
数值—在JS中所有的数值都是
Number
类型,包括整数和浮点数(小数);—可以使用运算符
typeof
检查变量的类型:—语法:
typeof 变量;
—检查字符串时,会返回
string
;—检查数值时,会返回
number
;—JS中返回数值最大值:
Number.MAX_VALUE
—如果使用Number表示的数字超过了最大值,则会返回一个
infinity
表示正无穷;—
infinity
可以直接使用,表示正无穷,-infinity
表示负无穷,使用typeof
检查时返回number
类型;—
NaN
是一个特殊的数字,not a number
表示非数值,使用typeof
检查NaN
时,返回number
;—JS中返回数值最小值:
Number.MIN_VALUE
(其值大于零);—JS中整数运算基本可以计算精确,但是如果使用JS进行浮点数运算,可能得到一个不精确的结果;因此尽量减少JS进行对精确度要求较高的计算;
-
Boolean
布尔值—布尔值只有两个值,主要用于逻辑判断:
—
true
:逻辑真; —
false
: 逻辑假;—使用
typeof
检查一个布尔值,会返回boolean
; -
Null
和Undefined
—
Null
类型的值只有一个:null
—
null
这个值专门用来表示一个为空的对象; —使用
typeof
检查Null
类型时,返回object
;—
Undefined
类型的值只有一个:undefined
,表示未定义; —当声明一个变量,但是未给变量赋值时,其值为
undefined
; —使用
typeof
检测Undefined
类型时,返回undefined
; -
强制类型转换—
String
将其他类型的数据转换为
String
类型:—方式一:调用被转换数据类型的
toString()
方法:被转换数据.toString();
该方法不会影响到原变量,它会将转换的结果返回;
<script> var a=123; a=a.toString(); console.log(typeof a);//返回string型 </script>
但是
Null
和Undefined
这两个值没有toString()方法
,如果调用这个方法会报错;方式一只适用于
Number
、Boolean
两种数据类型;—方式二:调用
String()函数
,并将被转换的数据作为参数传递给函数; 语法:
String(被转换数据);
使用
String()函数
作为强制转换时,对于Number
和Boolean
实际上就是调用toString()
方法;而对于Null
和Undefined
,会将null
直接转换为"null"
,undefined
直接转换为"undefined"
;<script> var b=null; b=String(b); console.log(b);//返回"null" console.log(typeof b);//返回string型 </script>
-
强制类型转换—
Number
将其他类型的数据类型转换为
Number
:—方式一:使用
Number()
函数;- 字符串转换数值:
——如果是纯数字的字符串,则直接将其转换为数字;
——如果字符串有非数字内容,则转换为
NaN
非数值;——如果字符串是一个空的或者全是空格,则转换为0;
- 布尔值转换为数值
——
true
转换为数值 1;——
false
转化为数值 0;Null
转换为数值
——直接转换为数值0;
Undefined
转换为数值
——直接转换为 非数值
NaN
;<script> var a = "123"; a = Number(a); console.log(a);//返回123 console.log(typeof a);//返回number型 </script>
—方式二:这种方式专门用来转换字符串类型:
parseInt()
:把一个字符串转换为一个整数;parseFloat()
:把一个字符串转换为一个浮点数;—
parseInt()
可以将一个字符串中有效的整数内容提取转换为数值;—
parseFloat()
可以将一个字符串中有效的浮点内容转换为浮点数;—如果对非
String
使用parseInt()
或者parseFloat()
,它会先将其转换为String
,然后再进行转换操作;—可以利用
parseInt()
进行取整操作;<script> var b = "123px"; b = parseInt(b); console.log(b);//返回123 console.log(typeof b);//返回number型 var c = null; //首先将c转换为字符串String型 c = parseInt(c); console.log(c);//返回NaN console.log(typeof c);//返回number型 </script>
-
强制类型转换—
Boolean
将其他类型的数据转换为
Boolean
:方式一:调用
Boolean()
函数转换为Boolean
类型;—数字转换为布尔值:
除了0 和
NaN
,其余的转换为布尔值都为true
;—字符串转换为布尔值:
除了空字符串,其余转换为布尔值都为
true
;—
Null
和Undefined
转换为布尔值都会为false
;—对象
object
转换为布尔值是true
; -
其他进制数字
—十六进制数字:需要以0x开头;
—八进制数字:需要以0开头;
—二进制数字:需要以0b开头,不是所有的浏览器都支持;
—像"070"这种字符串,有些浏览器会当作八进制解析,有些会当作十进制解析,解决方法:可以利用
parseInt()
进行转换时,传递第二个参数,指定数字的进制,使用逗号隔开:parseInt(a,10);
-
强制类型转换—隐式转换方法
String
隐式转换方法:可以利用将任意数据类型加上一个空字符串"",即可将其转换为
String
类型,这是一种隐式的类型转换,由浏览器自动完成;实际上也是调用String()
函数;
Number
隐式转换方法:(1)任何值做 减 乘 除 运算都会自动转换为
Number
类型,可以利用这个特性进行Number
类型转换;即 减0 乘1 除1将其转换为Number
类型;原理和Number()
函数一样,使用起来更加简单;(2)一元运算符
+
对于非Number
类型的值,首先转换为Number
数值在进行运算,可以利用这个特性,+其他数据类型
将任意数据类型转换为Number
类型,其原理和Number()
函数一样;
Boolean
隐式转换方法:如果对非布尔值进行非运算,则会将其转换为布尔值,然后再取反;所以可以利用该特点,将其他数据类型转换为布尔类型,即对任意数据类型取两次非,将其转换为布尔类型,其原理和
Boolean()
函数一样;为任意的数据类型做两次非运算,即可将其转换为布尔值;