function
什么是函数:
函数:封装一项特地使命的步骤清单的代码段,起一个名字。(**递次中供应的一项效劳的步骤申明**)
什么时候运用函数?当一项使命须要反复实行,但又不愿望反复编写时。(**代码重用!**)
怎样声明函数:function 使命名([参数变量列表]){
步骤清单代码段
[return 返回值]
}
***函数名(使命名): 指向函数定义的一个变量
函数:封装函数定义的援用范例对象
***声明时,不实行!也不读取内部的代码!
怎样挪用函数实行:任何位置: 函数名([参数值列表]);
***挪用时,才读取内部的代码,实行
参数变量:特地吸收要传入要领中处置惩罚的数据的变量。
什么时候须要定义参数:假如一个函数,必需一些数据才可平常实行,须要几个数据,就定义几个参数变量。
什么时候怎样为参数变量赋值:在挪用函数时,依据参数定义时的递次和个数,顺次传入参数值。
返回值:函数的实行效果
什么时候须要返回值:只需函数须要有明白的实行效果时
假如挪用者须要取得明白的实行效果时
怎样定义返回值: 函数定义内部,平常函数体末端
return 值;
挪用者什么时候怎样取得返回值:
1. 一个有返回值的函数挪用,能够当作一个值运用
2. 挪用时,可运用变量保留住函数挪用的返回值
function buy(what,moeny){
console.log("Step1:取盒饭");
console.log("Step2:去食堂");
console.log("Step3:打饭"+what);
moeny-=3;
console.log("Step4:扣款3元,余额:"+moeny);
console.log("Step5:回宿舍");
return "香馥馥的"+what;
}
console.log(buy("宫保鸡丁",10));
***变量作用域:一个变量的可用局限
有2种:1. 全局作用域:window
全局变量——放在全局作用域(window)中的变量
可在递次的任何位置接见全局变量
2. 部份作用域:在函数挪用时才建立的作用域
部份变量:2种:1. 参数变量
2. 在函数定义中var的变量
***仅在函数挪用时,动态建立
挪用时,假如部份有,就不必全局的!
***挪用后,随部份作用域一同烧毁
var kl=10;
function rose(){
var kl=5;
kl--;
console.log(kl);
}
function jack() {
kl--;
console.log(kl);
}
console.log(kl);//全局kl=10
rose();//4
console.log(kl);//全局kl=10
jack();//9
console.log(kl);//全局kl=9
声明提早
声明提早:正式最先实行递次前,先将var声明的变量和function声明的函数,提早到*当前作用域*顶部,集合声明,赋值留在原地。
var n=100;
function fun(){
var n;//undifend
console.log(n);
n=99;
console.log(n);
}
fun();//99
console.log(n);
按值通报:两变量间赋值,或将变量作为函数的参数通报时都仅将变量中的值,复制一个副本给对方!
var n=100;
var m=n;
n++;
console.log(m);//100
全局函数:ES规范中划定的,由浏览器厂商完成的,不须要任何对象前缀便可直接接见的函数.
比方:parseInt/Float(str),isNaN(n)
比方:alert() prompt()——BOM
分支构造
分支构造:
递次构造:3种:
递次构造:默许递次都是自上向下逐行递次实行
分支构造:依据差别的前提,挑选实行差别的操纵
操纵的庞杂水平
轮回构造:让递次反复实行统一代码段。
分支构造:3种状况:
1. 一个前提,一件事:满足前提就实行,(不满足就什么都不做)
短路逻辑:前提&&(操纵1,操纵2...)
什么时候运用:操纵异常简朴时
if构造:假如 满足*前提*, 就实行代码段
if(前提){
满足前提时,才实行的代码段
}
var price=parseFloat(prompt("请输入单价"));
var count=parseFloat(prompt("输入数目"));
var money=parseFloat(prompt("输入收款金额"));
var total=price*count;
if(total>=500){
total*=0.8;
}
var change=money-total;
console.log("应收:"+total+";找零"+change);
2. 一个前提,两件事:二选一实行!
假如 满足*前提*,就实行操纵1,不然,实行操纵2
三目运算:前提?操纵1:操纵2;
什么时候运用:操纵1和操纵2,都异常简朴时
if...else构造:
if(前提){
满足前提才实行的代码段
}else{//不然
不满足前提才实行的代码段
}
var price=parseFloat(prompt("请输入单价"));
var count=parseFloat(prompt("输入数目"));
var money=parseFloat(prompt("输入收款金额"));
var total=price*count;
if(money>=total){
var change=money-total;
console.log("应收:"+total+";找零"+change);
}else{
var change=total-moeny;
console.log("应收:"+total+";还差"+change);
}
多个前提,多件事,多选一实行!(有能够都不实行)
假如 满足 前提1 就实行 操纵1
不然,假如满足 前提2 就实行 操纵2
… …[不然,默许操纵]
三目:前提1?操纵1:
前提2?操纵2: ...: 默许操纵——不可省略
if…else if构造:
if(前提1){ 满足前提1才实行的操纵1; }else if(前提2){ 满足前提2才实行的操纵2; }else if(...){ ... }[else{ 假如以上任何前提都不满足,则实行默许操纵 }]
if (score<0||score>100) {
console.log("无效分数");
} else if(score>=90){
console.log("A");
} else if (score>=80) {
console.log("B");
} else if (score>=70) {
console.log("C");
} else {
console.log("D");
}
switch…case构造:
什么时候运用:当前提都是全等比较时,才可用switch构造
switch(表达式){ //1. 盘算表达式的效果
//用表达式的值和每一个case后的值做**全等**比较
//遇到一个全等的case值,则进入该case最先实行
//并默许以此触发以后一切case的实行
case 值1:
满足值1才实行的代码段1;
case 值2:
满足值2才实行的代码段2;
...:
... ...
default:
假如前边的值都不满足,实行默许代码段
}
switch(parseInt(prompt("请按键:"))){
case 1:
console.log("查询进行中.....");
case 2:
console.log("存款中......");
case 3:
console.log("转账进行中....");
case 0:
console.log("迎接下次再来!");
default:
console.lop("无效按键");
}
break: 中断当前构造的实行,并跳出构造。
位置:在每一个case之间
什么时候能够省略部份break:高低两个case愿望实行雷同代码时
switch(parseInt(prompt("请按键:"))){
case 1:
console.log("查询进行中.....");
break;
case 2:
case 3:
console.log("系统维护中....");
break;
case 0:
console.log("迎接下次再来!");
break;
default:
console.log("无效按键");
}