Js数据类型、类型转换以及三大流程控制
数据类型简介
为什么需要数据类型:
在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需的内存大小不同的数据,充分利用存储空间,浴室定义了不同的数据类型。
简单来说,数据类型就是数据的类别型号。比如姓名“张三”,年龄18.这些数据的类型是不一样的。
变量的数据类型:
变量是用来存储值的所在处,它们有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。javaScript是一种弱类型或者说动态语言。这意味着不用提前声明变量的类型,在程序运行过程中,类型会被自动确定。
数据类型的分类
JS把数据类型分为两类:
- 简单数据类型(Number、String、Boolean、Undefined、Null)
- 复杂数据类型(object)
简单数据类型:
Number:数字型,包含整型值和浮点型,如21、0.21 ;默认值0。
数字型范围
javaScript中数值的最大和最小值:
最大值:alert(Number.MAX_VALUE);这个值为:1.7976931348623157e+308。
最大值:alert(Number.MIN_VALUE);这个值为:5e-32。
数字型三个特殊值
- Infinity:代表无穷大,大于任何数值
- -Infinity:代表无穷小,小于任何数值
- NaN:Not a number,代表一个非数值、
isNaN:用来判断一个变量是否为非数字的类型,返回true或者false。
是数字返回false,非数字返回true。
var usrAge = 21;
var isOk = isNaN(userAge);
console.log(isNum); // false ,21 不是一个非数字
var usrName = "andy";
console.log(isNaN(userName));// true ,"andy"是一个非数字
Boolean:布尔值,如true、false。等价于1和0;默认值false。
String:字符串,如"张三"、"135"。注意咱们JS里面字符串都带引号;默认值""。
字符串型String
字符串可以是引号中的任意文本,其语法为双引号""和单引号''
字符串引号嵌套
JS可以用单引号嵌套双引号,或者用双引号嵌套单引号(外双内单,外单内双)
字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。
转义符都是以开头的,常用的转义符及其说明如下:
n : 换行符,n是newline的意思
\ : 斜杠 \
' : '单引号
" : "双引号
t : tab缩进
b : 空格, b是blank的意思。
字符串拼接
多个字符串之间可以使用+进行拼接,其拼接方式为字符串+任何类型=拼接之后的新字符串
拼接前会把字符串相加的任何类型转成字符串,再拼接成一个新的字符串
字符串拼接加强
经常会将字符串和变量来拼接,变量可以很方便地修改里面的值
变量是不能添加引号的,因为加引号的变量会变成字符串
如果变量两侧都有字符串拼接,口诀:“引引加加,
布尔型boolean
布尔类型有两个值:false ,true,其中true表示真,对,false表示假,错。
布尔值和数字型相加的时候,true的值为1,false的值为0;
undefined和Null
一个声明后没有被赋值的变量会有一个默认值undefined(如果进行相连或者相加时注意结果。
一个声明变量给Null值,里面存的值为空(学习对象是,我们继续研究null
获取变量数据类型
获取检测变量的数据类型
typeof 可用来获取检测变量的数据类型
不同的类型的返回值
字面量
字面量是在源代码中一个固定值的写法,通俗来说哦,就是字面量表示如何表达这个值,
数字字面量:
字符串字面量
布尔字面量:true,false
数据类型转换
什么是数据类型转换:
使用表单,prompt获取过来的数据默认是字符串类型的,此时就不能直接简单的进行加法运算,而需要转换变量的数据类型,通俗来说,就是把一种数据类型的变量转换为另一种数据类型。通常会使用三种方式的转换:
转换为字符串类型
转换为数字类型
转换为布尔类型
转换为字符串:方法:1.toSring(),2.Srting();强制转换,3.加强拼接字符串:和字符串拼接的都是字符串。
toString()和Sring()使用方式不一样。
三种转换方式,更多第三种加号拼接字符串转换方式,这一种也称为隐式转换。
转换为数字型:方法:parseInt()
parseFloat()
Number()强制转换函数
js隐式转换(- * /)利用算术运算隐式转换为数值型
Undefined:未定义,var a; 声明了变量a但是没有给值、此时 a = undefined;默认值undefined。
Null:空值,var a = null;声明了变量a 为空值。用于暂时不知道给什么值时,给null值占位。默认值null。
JS流程控制
在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的,很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能。简单理解:流程控制就是来控制我们的代码按照上面结构顺序执行。
流程控制主要有三种结构,分别是顺序结构,分支结构和循环结构,这三种结构代表三种代码执行的顺序。
顺序结构是程序中最简单的,最基本的流程控制,他没有特定的语法结构,程序会按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。
分支流程控制
分支结构:
由上到下执行代码的过程中,根据不同的条件,执行不同的路径代码(执行代码多选一的过程),从而得到不同的结果。
1.if单分支:
if的语法结构 :i
f(条件表达式);{
//执行语句
}
执行思路:如果if条件表达式为真时,则执行花括号里面的内容;如果if条件表达式为假则不执行大括号里面的内容。
1.1 if else 语句(双分支语句)
1.语法结构:
//条件成立时 执行if里面的代码,否则执行else里面的代码
if (条件表达式) {
//如果条件成立所执行的代码
} else{
//否则执行的代码
}
总结:如果if里面的条件为真,就执行if里面的语句,如果条件为假就执行else里面的语句(二选一)。
注意:else后面不可以跟括号()直接给花括号。
1.2 if else if 语句(多分支语句)
1.语法结构
//适用于检查多重条件。
if (条件表达式1) {
//语句1;
} else if (条件表达式2) {
//语句2;
} else if (条件表达式3) {
//语句3;
.......
} else {
//上述条件都不成立执行此代码
}
执行思路:
如果条件表达式1 满足就执行语句1,执行完毕后,退出整个if分支语句。
如果条件表达式1 不满足,则判断表达式2 满足的话,执行语句2 以此类推。
如果上面的所有条件表达式都不成立,则执行else里面的语句。
注意点:1.多分支语句还是多选1,最后只能有一个语句执行。2.else if 里面的条件理论上是可以任意多个的。3.else if 中间有个空格。
2.switch语句
1.语法结构:switch语句也是多分支语句,它用于基与不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用switch。
switch (条件表达式) {
case value (值):
执行语句1;
break;//用于退出整个语句,当匹配到正确的值,后面就不在执行。
case value (值):
执行语句2;
break;
case value (值):
执行语句3;
break;
.......
default:
当所有的值都不匹配时,执行的最后的语句;
}
执行思路:利用我们的表达式的值和case后面的选项值相匹配 如果匹配不上,就执行该case后面的语句,如果都没有匹配上,那么执行default里面的语句。
代码验证:
var num = 2
switch (num) {
case 1:
console.log('这是1');
break;
case 2:
console.log('这是2')
break;
case 3:
console.log('这是3');
break;
defaule:
console.log('没有匹配结果');
}
注意事项:
1.表达式里面我们经常写成变量
2.我们num的值 和case里面的值相匹配的时候是全等 必须是指和数据类型一致才可以 num == 2;
3.break如果当前的case里面没有break 则不会退出switch 是继续执行下一个case
3.循环语句
在Js中,主要有三种类型的循环语句:
- for循环
- while循环
- do...while循环
for循环:在程序中,一组被重复执行的语句被称之为循环体,能否继续重复执行,取决于循环的终止条件。由循环体及循环的终止条件组成的语句,被称之为循环语句。
语法结构:for循环主要用于把某些代码循环若干次,通常跟计数有关系,其语法结构如下:
for (初始化变量;条件表达式;操作表达式) {
//循环体
}
初始化变量: 就是用var声明的一个普通变量,通常用于作为计数器使用
条件表达式 : 就是用来决定每一次循环是否继续执行 就是终止的条件
操作表达式 : 是每次循环最后执行的代码 经常用于我们的计数器变量
下面小例子打印一百句你好吗:
for (var i = 1 ; i<=100;i++) {
console.log('你好吗');
}
*执行过程:1先执行初始化变量;2在执行条件表达式判断是否正确如果正确就执行循环体;3条件判断为真后执行操作表达式。然后在执行条件表达式-循环体-操作表达式-条件表达式-循环体-操作表达式-条件表达式-循环体-操作表达式........这样反复执行形成三角关系。如果条件为假,则退出循环。其中初始化变量只执行一次。*
双重for 循环
1.语法结构:
for (外层的初始化变量 ; 外层的条件表达式 ; 外层的操作表达式;) {
for (里层的初始化变量; 里层的条件表达式;;里层的操作表达式) {
//执行语句
}
}
2.我们可以把里面的循环看做是外层循环的语句
3.外层循环一次,里层循环执行全部
for循环小结
- for循环可以重复执行某些相同的代码
- for循环可以重复执行些许不同的代码,因为我们有计数器
- for循环可以重复执行某些操作,比如算术运算符加法操作
- 随着需求增加,双重for循环可以做更多,更好看的效果
- 双重for循环,外层循环一次,里层循环全部执行
- for循环是循环条件和数字直接相关的循环
- 分析要比写代码重要
- 一些核心算法想不到,但是要学会分析它的执行过程
- 举一反三,自己经常总结,做一些相似的案例
while循环
1.while 循环语法结构 while :当......的时候
while (条件表达式) {
//循环体
}
2.执行思路 当条件表达式结果为true 则执行循环体 否则退出循环
3.代码验证:
var num = 1;
while (num <= 100) {
console.log('how are you');
num++;
}
4.里面应该也有计数器 初始化变量
5.里面应该也有操作表达式 完成计数器的更新 防止死循环
while案例
// 1.打印人的一生,从1岁到100岁
var i = 1;
while (i<=100) {
if (i == 1) {
console.log('这个人今年'+i+'岁了,他出生了');
} else if (i == 100) {
console.log('这个人今年'+i+'岁了,他死了');
} else {
console.log('这个人今年'+i+'岁了');
}
i++;
}
// 2.计数 1- 100之间所有整数的和
var i = 1;
var sum = 0;
while (i<=100) {
sum += i;
i++;
}
console.log(sum);
// 3.弹出一个提示框 ,你爱我吗? 如果输入我爱你 ,就提示结束 否则一直询问
var xunw = prompt('你爱我吗?');
while (xunw != '我爱你') {
xunw = prompt('你爱我吗?')
}
alert('我也爱你');
do ....while循环
do....while语句其实是while语句的一个变体。该循环会执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环。
do...while语句的语法结构如下:
do {
//循环体代码 - 条件表达式为 true 时重复执行循环体代码
} while(条件表达式);
执行思路:
1.先执行一次循环体代码
2.再执行条件表达式,如果结果为true,则继续执行循环体代码,结果为false,则退出循环,继续执行后面代码
注意:先再执行循环体,再判断,我们会发现do ...while循环语句至少会执行一次循环体代码,就是说不管判断条件是真还是假都会先执行一次
循环小结
- JS中循环有for 、while、 do while、
- 三个循环很多情况下都可以相互替代使用
- 如果是用来计数,跟数字相关的,三者使用基本相同,但是我们更喜欢用for
- while和 do..while可以做更复杂的条件判断,比for循环灵活一点
- while 和 do...while执行顺序不一样,while先判断后执行,do .. while先执行一次,再判断执行
- while和do...while执行次数不一样,do...while至少会执行一次循环体,而while可能一次也不执行
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
哇,666