JavaScript-day13-个人学习笔记
一、函数
1、函数(function):是一段预定义好,并且可以被反复使用的代码块。预定义好 :事先声明,但不是马上执行;反复使用 :可以被多次调用;代码块 :包含多条可执行的语句。
2、函数的声明与调用
(1)普通函数
语法:function 函数名(){ 语句块;}
调用:在JS中任何的合法位置处,都可以通过 函数名() 的方式进行调用
(2)带参函数
语法:function 函数名(参数列表){ 语句块;}
参数列表:可以由0或多个参数的名称来组成,多个参数的话中间用 , 隔开;定义函数时的参数列表,都称为 "形参(形式参数)"
调用:任意合法JS位置处;调用函数时,所传递的参数列表,称之为"实参(实际参数)"
(3)带返回值的函数
返回值:由函数体内带到 函数体外的数据,叫做"返回值"
语法:function 函数名(参数列表){ 语句块; return 值;};允许通过一个变量来接收调用函数后的返回值;var 变量名 = 函数名(实参列表);
3、作用域
(1)什么是作用域:指的是变量和函数的可访问范围,作用域分为以下两类:a、函数作用域:只在定义的函数内允许访问变量 和 函数;b、全局作用域:一经定义,在任何位置处都能访问。
(2)函数作用域中的变量:在某个函数中声明的变量,就是函数作用域中的变量,也可以称之为 "局部变量"。
(3)全局作用域中的变量:一经声明了,任何位置都能使用,也称为 "全局变量"。
声明方式:a、将变量声明在最外层,所有的function之外,b、声明变量时,不使用var关键字,一律是全局变量,但有风险。
(4)声明提前:JS程序在正式执行前,会将所有var声明的变量以及function声明的函数,预读到所在作用域的顶端。但赋值还保留在原位置上。
(5)按值传递:基本数据类型的数字在做参数传递时,实际上时传递的实参的副本到函数中,原始数据并未发生过改变。
(6)局部函数:将函数 再声明在某个函数内,就是局部函数。
(7)全局函数:ECMAScript预定义的全局函数,可供用户直接使用。
a、paseInt();
b、parseFloat();c、Number();
d、isNaN();
e、encodeURI():编码:将多字节的字符,编译成多个单字节的字符
f、decodeURI():解码:对已编码的URI进行解码(将已编码内容再转换回中文)
g、eval():计算并执行以字符串方式表示的JS代码
二、递归调用
1、什么是递归:递归指的是在一个函数中,又一次的调用了自己
2、递归的实现
(1)边界条件
(2)递归前进 - 继续调自己
(3)递归返回 - 向上返回数据
三、分支(选择)结构
1、流程控制结构
(1)顺序结构 - 自顶向下的执行
(2)分支结构 - 有条件的选择某一段代码去执行
(3)循环结构 - 有条件的选择某一段代码反复执行
2、if 结构
语法:
if(条件){
满足条件要执行的语句块
}
如果条件为真,则执行 语句块 中的内容;如果条件为假,则跳过语句块去执行其他内容。
注意:if中的条件,最好是一个boolean的值,如果不是boolean类型,则会自动转换;if 后的 { } 是可以被省略的,如果省略的话,只控制 if 下的第一条语句
3、if ... else ... 结构
语法:
if(条件){
满足条件时,执行的语句块
}else{
不满足条件时,执行的语句块
}
4、if ... else if ... 结构
语法:
if(条件1){
//满足条件1时,要执行的语句块
}else if(条件2){
//满足条件2时,要执行的语句块
}else if(条件n){
//满足条件n时,要执行的语句块
}else{
//以上条件都不满足时,要执行的语句块
}
5、switch ... case
语法:
switch(变量){
case 常量值1:
语句块1;
break;//通过 break 结束switch的执行(可选 )
case 常量值2:
语句块2;
break;//可选
default:
语句块n;
break;//可选
}