JavaScript 基础02-js函数
JS 函数
1. 函数的声明
- function 关键字方式
function 函数名([形参]) {
}JS 代码 - 表达式方式
var 函数名 = function([形参]) {
}JS 代码 - Function 构造函数方式
var 函数名 = new Function(‘参数1’, ‘JS 代码’);
2. 调用函数
- 加括号才是调用
- 不加括号 是引用 该函数
3. JS 函数特点
- 函数没有返回值 默认返回undefined
- 函数可以重复定义的
4. JS 函数中的参数
- 形参与实参
- 实参个数 > 形参个数 多余的实参会被忽略
- 实参个数 < 形参个数 未赋值的参数 会被自动赋值为 undefined
- 参数的默认值
- 在函数内部判断 是否是undefined. 做赋值
- 可变参数个数
- arguments 获取所有传递的是参数,是一个数组对象
5. JS 中的变量作用域 全局和局部变量
- 在函数内 使用 var 定义的是 局部变量
- 在函数外 使用 var 定义的是 全局变量
- 在函数内/外 不使用 var 定义的是 全局变量
6. JS 的作用域链
函数的执行 依赖于变量的作用域
这个作用域是在 函数定义声明时决定的,而不是 函数调用时决定的!
- 如果当前作用域里 没有声明变量,则向上一层作用域里面找.
- 如果直到找到全局里 还都未找到,则在执行函数时 会报错.
7. 自执行函数 与 闭包
7.1 自执行
1 | ( function(){console.log(1)} )() |
这种写法的含义是将函数声明转换成函数表达式,消除了 JS 引擎识别函数表达式和函数声明的歧义.
它告诉 JS 引擎这是一个函数表达式,不是函数声明。并且可以在后面加括号,立即执行函数的内的代码.
7.2 闭包
简单说,闭包就是 能够读取 其他函数内部变量的 函数。
由于在 JS 中,只有函数内部的 子函数 才能读取 局部变量,
因此可以把闭包 简单理解成 “定义在一个 函数内部的 函数”。
所以,在本质上,闭包就是将 函数内部 和 函数外部 连接起来的一座桥梁。
闭包的最大用处有两个
- 一个是可以读取 函数内部的变量,
- 另一个就是 让这些变量的值 始终保持在内存中。
特效-倒计时同意
1 | <h3>10s倒计时生效按钮</h3> |