函数:封装一项任务的步骤清单的代码段,再起一个名字
( js中函数也是一个引用类型的对象,函数名其实也是引用函数对象的普通变量。)
函数对象:内存中专门存储一个函数定义的存储空间
函数定义的存储位置在window之外。
何时使用:一项任务可能反复使用时,就仅需要在函数中封装一次,反复调用函数即可。
如何声明函数:
function 函数名([参数1,参数2,...]){
步骤清单
return 返回值
}
参数:专门接受函数调用时,必要数据的变量
如何使用参数:在函数内,参数变量的使用和普通变量完全一样
2个作用:1. 暗示调用者,必须的参数有哪些
2. 调用时,可接受传入的参数值
如何调用函数:调用者直接调用函数名
js引擎按照函数中步骤清单执行函数
注意:函数 定义时,不读取函数的内容
只有调用时,才读取函数内容,执行。
语法:函数名(参数值1,参数值2,...);
返回值:是函数执行的结果
何时需要返回值:调用者是否需要有明确的执行结果
变量作用域:
js中有2种:
1. 全局作用域:在window下直接声明的一切都属于全局作用域。全局作用域下的变量,叫全局变量
特点:可在任何地方被访问,可反复使用。
2. 函数作用域:在函数中创建的变量都属于函数作用域。属于函数作用域的变量,叫局部变量
特点:仅在本次函数调用时创建
函数调用完,销毁。——不可重用!
***2种局部变量:
1. 参数变量
2. 在函数体中用var声明的变量
函数的执行过程:3个阶段:
1. 声明时:仅创建函数对象,封装步骤清单
2. 调用时:为*本次*函数调用创建执行环境,和活动对象。活动对象中再包含本次要用到的局部变量。
活动对象:在函数调用时,专门保存局部变量的空间
为什么叫活动对象:只有调用时创建,调用后就释放
变量的使用顺序:
如果活动对象中有,就用自己的
如果活动对象中没有,就用全局的
3. 调用后:执行环境弹出,活动对象释放。
***按值传递:将变量作为参数传入函数时,仅将变量中的值复制一个副本给函数的参数变量。
对于原始类型的值,在函数内修改参数变量的值,不影响外部全局变量的值。