函数概念
- 对于js来说,函数就是把任意一段代码放在{ }里面
- 想执行这段代码,直接执行这个{ }里面的代码
1 函数有两个阶段 - 函数定义阶段
- 两种定义方式 声明式和赋值式
1.1 声明式:使用function 这个关键字来声明一个函数
1.2语法:function fn(){
要执行的一段代码
}
function:声明函数的关键字,表示接下来就是一个函数了
fn:函数的名字,自己定义,遵循变量名的命名规则和命名规范
( ):放行参的位置
{ }:放要执行的代码的位置
2.1赋值式,var定义一个变量,把一个函数当做值直接赋值给这个变量
2.2 语法:var arr=function( ){
要执行的一段代码
}
2函数调用阶段
- 让{ }里的代码执行一下
- 让函数执行
1.1 声明式函数 function fn(){
console.log(‘我是fn函数’ )
}
调用函数 fn()
赋值式函数 var arr=function(){
console.log(‘我是arr函数’)
}
调用函数 arr()
定义完function 以后,如果没有函数调用,那么写在{ } 里的代码不会执行,没有意义,调用function才会执行
1.2声明式函数的调用可以在 定义之前或者定义之后
1.3赋值式函数的调用只能在定义之后
function 的参数
- 参数分为 行参 和 实参
1.1声明式 function fn(行参){
要执行的代码
}
fn(实参)
赋值式函数var arr=function(行参){
要执行的代码
}
arr(实参)
1.2行参:在函数内部可使用的变量,在函数外部不能使用
就相当于在函数内部定义了一个可以使用的变量
多个单词以 , 分隔
只有行参,在函数内部使用的变量没有值,undefined
行参的值是在函数调用时由实参决定
1.3实参:在函数调用时给行参赋值的
函数内部的行参的值,由函数调用时传递的实参决定
多个参数时,按照顺序一一对应
function的return
-
给函数一个返回值和终断函数
1.1终断函数: -
当执行代码时,函数内部的代码从上至下依次执行
-
要等到函数内代码执行完毕
-
return 关键字可以从函数中间位置停掉,让后面代码不再继续执行
1.2 返回值 -
函数调用本身也是一个表达式,
-
return 可以给函数一个执行完毕的结果
-
在函数内部使用return 把任何内容当做这个函数运行的结果
function 的优点 -
对一段代码的封装,在我们想调用时调用
-
封装代码,可以使代码简洁
-
在重复功能时直接调用
-
随时在想要执行时执行
预解析
在所有代码执行之前进行解释,预解释
-
声明式函数
在内存中,先声明有一个变量名是函数名,这个名字代表的是一个函数 -
var关键字
在内存中先声明有一个变量名 -
赋值是函数会按照var关键字的规则进行预解析
作用域
- 一个变量可以生效的范围
- 变量的使用范围就是作用域
全局作用域
- 全局作用域是最大的作用域
- 全局作用域中定义的变量在任何地方都可使用
- 页面打开时,浏览器会自动给我们生成一个全局作用域 window
- 页面关闭才销毁
局部作用域
- 在全局作用域下开辟出一个小一些的作用域
- 只能在局部作用域内部使用
- 在 js 中只有函数能生成一个局部作用域
- 每一个函数都是一个局部作用域
变量使用规则
- 变量使用规则分为两种,访问规则和赋值规则
1 访问规则
-
想获取一个变量值的时候
-
规则:
首先在自己作用域内部查找,有就用
没有,就去上一级作用域查找,有就用
没有,就继续上一级作用域查找,依次类推
一直到全局作用域都木有变量,直接报错 -
变量的访问规则 也叫做作用域的查找机制
-
作用域查找只能向上找
2 赋值规则
- 先找到变量,在赋值
- 规则:
在自己作用域查找,有就赋值
没有去上一级作用域查找,有就赋值
在没有再去上一级作用域查找,有就赋值
一直到全局作用域都木有,就把变量定义为全局变量,在给它赋值