概述
第二章:数据类型和类型转换
一、数据类型简介和检测
1.数据类型的分类
从大的层面来讲,分为基本数据类型和引用数据类型
- 七种基本数据类型
- String 字符串类型
- Number 数字类型
- Boolean 布尔类型
- Null 空
- Undefined 未定义
- Symbol 符号
- Bigint 任意精度的整数
- 引用数据类型
- Object 对象
2.typeof操作符
- 作用:检测值或变量的类型,结果都是字符串形式
- 用法:
- 检测值的类型:typeof 值; 或 typeof(值);
- 检测变量类型 typeof 变量名;或 typeof(变量名);
- 如果typeof标测得是一个表达式,则一定要带上括号,如typeof(2+“2”);
注意:typeof返回值的类型都是字符串类型
二、5基本数据类型
1.Number数字类型
1.1是什么
- 所有的数字都是Number类型,包括整数(正负数)和浮点数(小数)
- 在表达小于1的数时,小数点前面的0可以去掉,比如0.2可以写成.2
1.2不同进制的数字
- 最常见的有二进制、八进制、十进制、十六进制
- 我们用的最多的是十进制,逢10进1
1.2.1 二进制数
- 二进制数以0b开头
- 二进制数字序列范围0-1,逢2进1
//二进制数字2如何表示,前面一定要加0b,否则按十进制处理
var a = 0b10;
console.log(a);
1.2.2 八进制数
- 八进制数以0开头
- 八进制数字序列范围0-7,逢8进1
- eg:012(八)=10(十) 014(八)=12(十)
- 09指的是十进制9,因为八进制中最大的数不能超过8
1.2.3 十六进制
- 十六进制以0x开头
- 十六进制序列范围0-9以及A-B-C-D-E-F(10,11,12,13,14,15),逢16进1
- eg:
- 0xa(十六)=10(十)
- 0xff(十六)=255(十位上的f代表15个16,个位上是15,15x16+15=255)
1.3 科学计数法
- 对于非常大或非常小的数,用此表示
- e7表示10的7次方,小数点向右移动7个点的位置
- e-7表示0.1的7次方,小数点向左移动7个点的位置
1.4 数字中最大值和最小值
- 由于内存限制,JS不支持表示这个世界上的所有值,JS中能表示的
- 最小值保存在Number.MIN_VALUE中 //5e-324
- 最大值保存在Number.MAX_VALUE中
1.5 正无穷大和负无穷大
- 如果计算的数值超过了js能表示的正数范围,则会以Infinity正无穷表示
- 如果计算的数值超过了js能表示的负数范围,则会以-Infinity负无穷表示
1.6 NaN
- NaN(Not a Number)不是一个数字
- 而NaN用typeof检测,结果是Number,可以理解为不是数字的数字类型
- NaN是数字类型,但不能代表任何数字含义,所以不是数字。
关于NaN的运算
- 在数学运算中,如果得到的结果不是数字,则会返回NaN.eg:console.log(“我”-“你”)//NaN,因为结果不是数字
- 任何值与NaN做运算,都会得到NaN,除了与字符串拼接
- console.log(“我”+NaN) //“我NaN”
- 0除以0结果为NaN
- NaN自己与自己不相等。
- undefined+数字=NaN
1.7 isNaN()
- isNaN()在执行时会进行隐式类型转换,内部自动调用Number()函数
- 判断是否“不是数值”,true不是数值,false是数值
- 注意:数字字符串结果为false,即判断为数值。//console.log(isNaN(“2”))——false
2.字符串类型
2.1 定义字符串
- ’ '或" "
- 通过输入框输入的值都是字符串类型prompt
2.2 双引号与单引号嵌套
- 单引号不能直接嵌套单引号,若想嵌套,里面的单引号要改为转义符 ’
- 双引号不能直接嵌套双引号,若想嵌套,里面的双引号要改为转义符 "
- 单引号可以嵌套双引号(推荐),双引号可以嵌套单引号
字符串转义符——放在引号里
- n ——换行符
- —— 斜杠
- ’ ——单引号
- " ——双引号
- t——tab缩进
- b——空格
2.3 字符串的拼接 +
- 字符串与任何类型拼接,最终结果是字符串类型
2.4 空字符串
- ''或""
- 作用:数据类型转换
- 字符串与任何类型拼接,最终结果是字符串类型
- 提前预设变量保存值为字符串类型
<script>
var result="";//result设置为空字符串,与数字相加为字符串
for (var i = 0 ;i<6;i++){
result=result+parseInt(Math.random()*10);
}
console.log(result);//循环六次,得到一个六个数的字符串
</script>
<script>
var result;//result只声明未赋值,默认值为undefined,undefined+数字=NaN,导致得不到结果
for (var i = 0 ; i<6 ;i++){
result=result+parseInt(Math.random()*10);
}
console.log(result);//NaN
</script>
2.5 length属性
- 通过 length 属性,可以获取整个字符串的长度
- 注意,若空字符串里面有空格,也算长度
3.Boolean类型
做逻辑判断,两个值true和false
4.null空类型
- null类型只有一个值,就是null
- null表示一个空对象指针
- 用typeof检测null类型,结果为’object’
注:
虽然typeof null结果为Object,但是null是基本数据类型,这是一个历史遗留问题。
- 不同的对象在底层都表示为二进制,在js中二进制前三位都为0的话会被判断为object类型
- null的二进制表示是全0,自然前三位也是0,所以执行typeof时会返回object
null作用:
- 如果一个变量被声明后,将来是用来保存对象值的,那建议用null来初始化,不要使用其他值。
- 当我们需要将对象,数组,事件监听进行销毁时,就可以把他们设置为null,只有把他们设置为null时,js垃圾回收器才会把他们当成垃圾,进行垃圾回收。
5.undefined
- undefined类型,只有一个值,就是undefined
- 当声明一个变量,但是并不给变量赋值时,默认值为undefined
三、数据类型转换
1.其他类型转换为数值型,有四种方式
- 1、Number()
- 2、parseInt()
- 3、parseFloat()
- 4、隐式转换
1.1 Number()
1.1.1 字符串转数字
- ''空字符串
- 字符串只有前后包含空格’ ’
- 纯数字类字符串
- 2进制或16进制表示的数字
- 科学计数法
除了以上5种情况,其他转为NaN - Number([])结果为0
- Number({})结果为NaN
1.1.2 Boolean转数字
- Number(true);//1
- Number(false);//0
1.1.3 null和undefined转数字
- Number(null);//0
- Number(undefined);//NaN
1.2 parseInt()和parseFloat()
- 只能将字符串转成数字
- 从第一个非空字符开始转换,如果第一个字符不是数值,加号或减号,parseInt立即返回NaN
- parseInt()和parseFloat()将空字符串""转为NaN
- 若第一个非空字符是数值,加号,减号,则继续检测,知道字符串末尾,或碰到非数值字符,就停止
- parseInt()将字符串转成整数,parseFloat()将字符串转成小数
附(思考总结)=================:
A:字符串转数字时
- Number()会将空字符串""转为数字0;
- parseInt()和parseFloat()不会将""转为数字,而是返回NaN
- Number() 和 parseInt()与parseFloat()在遇到不是纯数字字符串转为数字时
- Number(“123a”);//NaN
- parseInt(“123a”);//123
- parseFloat(“123a”);//123
B:在处理用户输入是否为数字时用isNaN()
- 因为用prompt(),返回的是字符串,isNaN()内部会想尝试将字符串转为数字,再判断是否不是数字,内部隐式转换调用的是Number(),可以将数字的字符串形式转换为数字,但同时,"“空字符串会被转换成数字0,但显然,空字符串”“不是数字。因此,还要过滤掉空字符串,用isNaN(parseInt()),因为parseInt()参数为空字符串”"时会返回NaN,此时就可以过滤掉空字符串了。
- 如果要求输入是整式,直接用parseInt(),可以规避掉空字符串
1.3 隐式转换
- 遇到有算术运算(+、—、*、/),会进行隐式转换,调用Number()函数先将字符串转化为数字,再进行运算
2.其他类型转换为字符串
- String()
- toString
- +’ ’
以上方法或函数,将任何类型转换为字符串,都会转换成长得相同的字符串,除了科学计数法和非10进制数字,会将其转换为10进制的字符串
2.1 String()
- 数字转换为字符串
- 布尔值转换为字符串
- undefined和null转换为字符串
2.2 toString()
- 数字转换为字符串
- 布尔值转换为字符串
- undefined和null没有toString()方法
2.3 +’ ’
3.其它类型转换为 boolean 布尔类型
- Boolean()
- 代表空、否定的值会转换为false。如:0、NaN、null、undefined、’ ’
- 其他的均为true
注意:Boolean(" ");//true
JavaScript弱类型的动态脚本语言
- 动态 声明变量时,不需要确定变量类型,根据后面赋的值确定
- 弱类型 支持隐式类型转换
- 脚本语言 边编译边执行
最后
以上就是单身航空为你收集整理的第二章:数据类型和类型转换第二章:数据类型和类型转换的全部内容,希望文章能够帮你解决第二章:数据类型和类型转换第二章:数据类型和类型转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复