函数声明的五种方式
- 具名函数
function fn(输入1, 输入2, ...){
return 输出值
}
函数是变量的特例
console.log(x) -> 结果:字符串
- 匿名函数
var fn = function(输入1, 输入2, ...){
return 输出值
}
- 声明+具名
var f = function fn(输入1, 输入2, ...){
return 输出值
}
console.log(fn) -> 报错
fn的作用域只在函数的代码块内
- Function构造函数
var fn = new Function('输入1', '输入2', 'return 返回值')
5.ES6语法(箭头函数)
fn = (输入1, 输入2) => {
return 输出
}
只有一个参数,可以省略(),函数体只有一句话,可以同时省略{}及return
箭头函数只能是匿名函数,可以用变量包含
函数的name属性
- 具名函数的name
function fn(){}
fn.name //fn
- 匿名函数的name
var f = function(){}
f.name //f
- 声明+具名函数
var f = function fn(){}
f.name //fn
- Function构造函数
var fn = new Function('x', 'y', 'return x+y')
fn.name //"anonymous"
函数调用
- fn(参数1, 参数2, ...)
- fn.call(undefined, 参数1, 参数2, ...)
this 与 arguments
fn.call(undefined, 参数1, 参数2, ...)
this: undefined
arguments: 参数1, 参数2, ...
call的第一个参数可以用this得到
call的后面的参数可以用arguments得到
非严格模式下,this为undefined时,浏览器会自动将undefined变为window
调用栈
stack ->先入后出
闭包
如果一个函数,使用了它范围外的变量,那么(这个函数+这个变量)就叫做闭包
网友评论