流程控制
1.条件语句 分支结构
单向分支
if (条件表达式){
code...
}
双向分支
if (条件表达式){
code...
}else{
code...
}
多向分支
if (条件表达式){
code...
}else if(条件表达式){ code... }else{ code... }
switch (条件表达式){
case 条件表达式可能的结果:code... break;
case 条件表达式可能的结果:code... break; case 条件表达式可能的结果:code... break; default code... }
嵌套分支
if (条件表达式){
if (条件表达式){
code...
}
}else { if (条件表达式){ code... } }
2.循环语句
while循环
while (){
//循环体
}
do...while循环
do{
//循环体
} while(循环条件)
for循环
for (变量定义;循环条件;变量变化){
//循环体 }
3.其他语句
跳转语句
continue; 跳出当前循环 继续下一次
break; 结束循环 return: 结束函数
异常
try{
code...
}catch(err){
}finally{
}
catch相当于python中的except
严格模式
//写在所有代码的最前面
//开启严格模式方法
'use strict'
- 严格模式下 声明不加var会报错
- eval() 在严格模式不能用
4.注意
- 当分支语句和循环语句的结构体{}内只有一行代码的时候,可以省略{}
函数
1.定义函数
//function 关键字方式
function 函数名(参数1,参数2){ code... } //表达式方式 var 函数名 = function(参数1,参数2){ code... }
2.函数特点
- 函数名就是变量名
- 函数调用必须加()
- 关键字方式定义的函数,会存在函数提升(可以在函数定义前调用,而表达式方式只能在定义后调用)
3.函数的参数问题
形参和实参
- 实参数量>形参数量 多给的实参会被忽略
- 实参数量<形参数量 多出的形参,会使用默认值undefined
参数的默认值
//ES6 新增的语法
function demo(a,b=默认值){
code... } //有默认值的参数一定在后面
可变数量的参数
arguments对象 可以获取所有的实参
只能在函数中使用
arguments是类数组对象,用法同数组,可以使用for遍历循环 例: function sum(){ for (var i=0;i<arguments.length;i++){ s += arguments[i] } return s; }
4.return
- return 可以结束函数
- return返回值
- js return 只能返回一个值
2.5 回调函数(高阶函数)
- 函数的参数 还是 函数
list.sort()按字符串排序
list.sort(function(v1,v2){
return v1-v2 }) return值大于0时,v1与v2换位置 return值小于0时,v1与v2不换位置
2.6 自调函数
(function(){
})();
(function 函数名(){ })() //如果多个自调函数连续写, 中间必须加 ; 否则报错 //产生局部作用域 //有效避免全局变量污染
2.7 递归
与python相同