函数:
开发中使用函数是为了方便.
函数:把公共部分抽取封装,可以随时使用。
声明:
Function xxx()
{
xxx
}
调用:
Xxx()
重复调用:
For(…)
函数:执行特定任务的代码块,可以包含相似或相同逻辑的代码。
Alert,prompt等就是函数
函数格式:
Function 函数名()
{
函数体
}
函数命名规范:尽量小驼峰,前缀应该为动词
常用动词含义:
can 判断是否可执行某个动作
has 判断是否含义某个值
is 判断是否为某个值
get 获取某个值
set 设置某个值
load 加载某些数据
含参函数:
Function 函数名(参数列表)
{
函数名
}
函数传参的时候,如果传过去的是数值,接受的是变量,则默认进行了一次赋值运算。
多个参数传递,则按照排列顺序一一对应。
调用函数的时候传递过去的参数被成为实参,即实际上的参数
函数名中的参数为形参,即形式上的参数。
也可以设置默认参数:
Function 函数名(x=1,y=1)
{
xxx }
如果有参数传递,则不会执行x=1和y=1的行为,这样会保证程序更加严谨。
传递数组为参数:
Getsum([1,2,3,4,5])
Function getsum(arr)
其中arr为一个数组。
但是如果形参为数组的话,实参不传递,则会传递空数组。
函数的返回值:
把函数的处理结果返回给调用者,使用关键字:return
Return会直接结束函数,不会执行后面的语句。函数如果不写return,则默认返回undefined
封装:把代码块放进函数中独立存在。
Return可以返回多个数据,把它存放在数组中:
Return [max,min]
也可以返回表达式:
Return x+y
实参多于形参:多出来的不参与运算
实参少于形参:另一个数据为undefined,运算结果一般是nan
函数的作用域:
一个变量可用的范围就是变量的作用域,函数可用的范围就是函数的作用域。
全局作用域:在整个script标签或独立js文件都可以使用
局部作用域:例如for
For(let I = 0 ;… ;…){
}
这里的i就是局部作用域,在函数内声明的变量也是局部作用域。
函数内部变量如果没有声明会直接当作全局变量使用,但不推荐这么写,容易出错。形参可以看作是局部变量。
就近原则:
如果函数内部存在一个和函数外部相同名字的变量,则会优先认为函数内部的变量。
匿名函数:
函数分为两种:具名函数,匿名函数
Function() {}
匿名函数无法直接使用,使用方法为:
Let fn = function(){}
这样就可以让fn作为函数的名字来使用。使用方法:
Fn()
具名函数的调用可以写在任何位置,但匿名函数必须先规定再使用。
另一种方法:立即执行函数,写法:
(Function(){})()
先写两个小括号:
()()
再给第一个小括号里写标准函数的格式:
(function(){})()
实例:
(function(x,y)
{
Console.log(x+y)
})(这个小括号内是实参);
立即执行函数必须用分号隔开。
封装时间函数:
略
特殊写法解释:
Function fun(x,y)
{
X=x||0
Y=y||0
Console.log(x+y)
}
这种写法的意思是如果不知道传什么就使用0,用到了逻辑运算符的逻辑中断,&&左为false就短路,||也一样.
布尔类型转换:
空字符串,0,undefined,null,false,NaN都是false,其余都为true
逻辑或取第一个值为真则为全真,这一点需要单独注意.