顺序结构:
按照代码书写顺序,自上而下依次执行
选择(分支)结构:
根据不同的条件,选择执行不同的过程
循环结构:
重复执行某个或某段代码,当遇到特定的条件时结束
单分支:
if(你还没睡着么?){ 是
那我们去撸串~~~
}
当条件判断为真true时,执行花括号内的语句,如果条件为假false,跳过花括号内的语句
if(条件){
执行语句
}
双分支:
if(你有对象么?){ 有
那你可以参加双人游戏
}else{ 否则
你可以参加多人游戏
}
if(条件){
执行语句1,为真时执行
}else{
执行语句2,为假时执行
}
当条件判断为真true时,执行语句1,如果条件为假false,执行语句2。
if()括号里面的东西我们通常也叫它逻辑点
为真true,为假false,这是布尔值,需要通过逻辑运算符得到。
隐式类型转换:
但是:
if(1){
alert("会弹出来么?");
}
1是数值型,不是布尔值,更不是true?为什么会执行花括号内的语句了呢?
在一些特定的情况下,计算机会进行一些隐式转换,他和强制类型转换不一样,他不需要你做什么,会自动对数据类型进行转换
在运算中,if(小括号)中的语句会发生隐式类型转换。
1.运算中的隐式类型转换:
var a = "1",b = 2;
a + b = ???
+号有两种含义:数学中的+号运算符;字符串的拼接。优先字符串拼接,所以在检测到+号左右两边存在字符串的时候,会自动将另一边不是字符串的数据,转成字符串,再进行操作
a - b = ???
除了+号有两层意义为外,-*/%号只有数学意义,所以当进行-*/%的时候,默认将运算符两边的数据类型隐式转换成数字类型再进行运算
2.if(小括号)内的隐式类型转换。
if()中只需要布尔值,那么在if判断中,会把括号内所有的数据类型,都隐式转换成布尔型。
在if()中,非零数字都会转成true,非空字符串都会转成true;这是两条基础规则
alert(1 == true)
switch()内,不会做判断,在case身上判断这个值是否符合。
switch()内,不能做判断,同时在case后也不能做条件判断,
注意:如果判定的是范围,不要使用switch语句;判定具体数据的时候,才使用switch
案例:判断星期几;判断成绩;
注意switch的应用场景:有多个 确定值 需要判断的时候
注意case语句的穿透,要加break语句:如果程序没有break语句,那么解析器会继续向下解析
注意default相当于if语句中的else,当以上条件都不满足的时候,执行default
补充:
1.错误提示信息。改bug
missing ) after argument list 丢失一半括号
Unexpected token ) 意外符号
oYeear is not defined 没有声明oYeear
Cannot read property 'value' of null 无法获取空值的value
Unexpected identifier 意外的标识符
。。。。。。
循环的意义:
计算机是个傻子,没有七情六欲,不会有人类的感性和思考。当你问他爱吃啥,他不知道,当问他喜欢什么颜色,也不知道。那我们要计算机干啥呢?
从远古时期讲,所谓计算机并没有现在这个牛的功能,游戏电影,都是不可能的。只能干一件事:计算。那么什么是计算呢,为什么不自己计算呢?
所谓计算,就是数据的累加,比如1jia到100,这些累加都是重复性的工作,当人处理这些重复性的工作时,速度有限,但是计算机处理起来奇快无比,这就是计算机的价值所在。
发展到今天也是一样,当我们需要计算机的时候,大多数让他干的都是重复性的工作,这些重复性的工作有着极其相似的代码
比如,打印10次“hello world”;
document.write("hello world");
document.write("hello world");
document.write("hello world”);
…………
对于我们来说这样费时费力,同时也会有很多的代码冗余,那么这个时候我们应该使用的就是js中的循环。
当然我们也可以不用循环,但是我们要是打印100次hello world呢?