JavaScript 函数
1. 创建函数及调用
声明式函数
function fn(){
console.log('我是声明式函数')
}
fn() // 调用函数
表达式函数
var fn = function(){
console.log('我是表达式函数')
}
fn() // 调用函数
匿名函数与立即执行函数
(function(){
console.log('我是匿名及立即执行函数')
})()
箭头函数
var fn = () => {
console.log('我是ES6新增的箭头函数')
}
fn()
形参:形式上的参数——给函数声明一个参数。
实参:实际的参数——在函数调用时给形参赋的值。
var fn = function(a,b){
// 这里 a 与 b 表示形参
console.log(a + b) // 3
}
// 1 与 2 是实参
fn(1+2)
使用关键字:arguments,代表所有实参的集合。通过下标获取参数的每一位;
通过length获取实参的个数;集合是类数组,可以使用下标,但是没有数组中的各种方法。(不清楚的 arguments 的请看 数组篇)
function fn () {
console.log(arguments) // [1,2]
}
fn(1, 2)
- 所有函数都会有函数返回值即函数执行后一定会返回一个结果,如果没有定义默认返回undefined;
- 在函数中,return后定义返回值;
- 在函数中,return之后的代码就不会再执行了.
function fn (a,b) {
return a + b
}
fn(1, 2)
console.log(fn(1,2)) // 3
对任何内部函数来说,都是可以访问的。
凡是代码块就可以划分变量的作用域,这种作用域的规则就叫块级作用域。
4.4 作用域链
采取就近原则的方式来查找变量最终的值。
4.5 预解析
预解析过程和代码执行过程。
在执行代码是时候,JS 解析器会把 变量 与 函数 提升到作用域最前面,且不会对变量进行赋值 与 函数调用等操作(变量提升,函数提升)。