条件语句
if 和 if – else 语句
if(你还没睡着么?){ 是
那我们去撸串~~~
} 当条件判断为真true时,执行花括号内的语句,如果条件为假false,跳过花括号内的语句 if(条件){
执行语句
}
if(你有对象么?){ 有
那你可以参加双人游戏
}else{ 否则
你可以参加多人游戏
} if(条件){
执行语句1,为真时执行
}else{
执行语句2,为假时执行
}
switch语句/break关键字:
switch()多分支语句 注意:在switch()内,不会发生隐式数据类型转换 switch(){
case 0:alert("零");
break;
case 1:alert("一");
case 2:alert("二");
default:alert("不识别的数字");
} switch()内,不会做判断,在case身上判断这个值是否符合。 switch()内,不能做判断,同时在case后也不能做条件判断, 注意:如果判定的是范围,不要使用switch语句;判定具体数据的时候,才使用switch 案例:判断星期几;判断成绩; 注意switch的应用场景:有多个 确定值 需要判断的时候 注意case语句的穿透,要加break语句:如果程序没有break语句,那么解析器会继续向下解析 注意default相当于if语句中的else,当以上条件都不满足的时候,执行default
循环
while循环和do-while循环的使用
while(条件){
执行语句
}
//当条件为true时,会一直重复执行花括号内的执行语句。注意:千万不要造成死循环 var i = 0; //计数器
while(i<10){ //停止的条件
document.write("hello world”);
i++; //改变计数器
} //注意:为避免死循环,一定要在循环体内改变条件中使用的变量的值 do-while do{
当条件为真,执行这里的语句
}while(条件){
当条件为假,执行这里的语句
} 当条件为真时,执行do的语句,当条件为假时,执行while的语句 do{
console.log("do的执行语句”);
i++;
}while(i<10){
console.log("while的执行语句");
} 注意do-while的改变计数器需要写在do语句中,否则会造成死循环。 while和do-while的区别?
do-while无论结果为真还是为假,都会执行一次
continue关键字 和 break关键字的使用 continue和break都是用来控制循环结构的,主要是用来停止循环。 continue表示终止本次循环,还执行后面的循环。也可以理解成跳过本次循环中剩下的语句,执行下一次循环。 break表示完全结束一个循环,跳出循环体执行循环后面的语句。 for循环的使用
for(语句1;语句2;语句3){
需要执行的代码块
} 语句1:在循环体开始前执行----计数器
语句2:循环的条件--------停止的条件
语句3:在循环体被执行后执行---改变计数器 for(var i = 0; i < 10; i++){
console.log(1);
} 注意在for循环中语句之间用“;”隔开。 小技巧:在知道执行次数时用for,在无法判断循环次数时用while
for循环的嵌套
一般情况下,循环与循环之间是可以完成嵌套的。 例如,我们可以通过两个for循环的嵌套打印出一个直角三角形。
demo:
for(var i =0;i<9;i++){
console.log("one" + i);
for(var j = 0; j < i -1 ;j++){
console.log("two - "+j)
document.writeln("*");
}
document.write("<br/>");
}
for循环嵌套时,注意各个循环的计数器变量名不能重复,否则会变成死循环
死循环
循环主要根据我们设定的条件来判断是否要开启下一次循环过程。如果我们设定的循环的条件不合理的话,就会进入死循环
,代码进入死循环后,将一直陷入到死循环当中。
for(var i=0;i >=0 ;i++){
console.log('hello,world');
}
函数
概念:函数是由事件驱动的或者当他被调用时可执行的可重复使用的代码块。函数的定义(创建):声明式和赋值式和构造函数
通过关键字function声明
function fn(){}
其中:
function---为声明函数的关键字,指出这是一个函数
fn ------是函数的名称,类似于永来存储函数的变量
() ------为函数的参数,多个参数用 , 隔开
{} ------放置函数体,用于执行时,所要编译的代码段
通过变量赋值(未命名函数):
var fn = function(){}; 这种方式下,虽然这个函数没有名字,但是这个函数赋值给了fn,因此通过变量fn也能调用到这个函数 以上两种声明方式等价 都可以使用 函数名/变量名+() 调用执行
Function 构造函数
第三种方式是通过Function构造函数。
var fn = new Function(){};
函数重复声明
当在js
代码中出现函数重复声明的情况(也就是函数名相同),那么后面的函数会把前面的函数给覆盖掉。
function fn1() {
console.log(1111);
}function fn1() {
console.log(2222);
}fn1(); //
函数提升
在js
当中,函数存在函数
提升的现象,类似于变量提升
。在宿主环境
执行代码的前一刻,会预先解析一次代码
,将代码中的变量声明
和函数
都提升到代码的最顶端。
也就意味着我可以在函数定义之前的任何位置调用后面才定义的函数。
return 语句
在js
函数体内的return
语句,表示返回。
JavaScript 引擎遇到return语句,就直接返回return后面的那个表达式的值,后面即使还有语句,也不会得到执行。也就是说,return语句所带的那个表达式,就是函数的返回值。return语句不是必需的,如果没有的话,该函数就不返回任何值,或者说返回undefined。
例如:
function fn1(){
var name = "zhangsan";
var age = 19; return name + "今年" + age + "岁!";
}
如果函数内没有返回值,但是我们偏偏还来打印,那么结果将返回undefined
。
递归函数
当函数发生在函数体内自己调用自己这样的情况时,这个函数我们就可以称之为叫做递归函数
。
例如下面的demo
,就是一个递归函数
:
// 递归函数
function fib(num) {
if (num === 0) return 0;
if (num === 1) return 1;
return fib(num - 2) + fib(num - 1);
}console.log(fib(6)); //
在上面的demo
中,通过递归函数
计算了一下斐波那契数列
。
上面代码中,fib函数内部又调用了fib,计算得到斐波那契数列的第6个元素是8。
参数的声明和传递
函数的参数分为:形参和实参;
function fn(a){ //a为形参
console.log(a); //打印出123
}
fn(123); //123为实参 写在函数体内的参数称为形参,相当于该函数的某个变量,只不过不用var声明;需要遵循变量的命名方式。
调用时传递的参数为实参,相当于给变量赋值,可以传递所有数据
for(var i =0;i<9;i++){ console.log(“one” + i); for(var j = 0; j < i -1 ;j++){ console.log(“two – “+j) document.writeln(“*”); } document.write(“<br/>”); }