![9d911b61382be31bec0ed68dc7592f43.png](https://i-blog.csdnimg.cn/blog_migrate/1e813619363b90e6f6420309b0aa8298.jpeg)
函数是什么?
按阮一峰老师的话来说:函数是一段可以反复调用的代码块。函数还能接受输入的参数,不同的参数会返回不同的值。
函数的声明
- 具名函数
function x(){
函数内部代码
return undefined // 函数必须有返回值,若没写则默认返回undefined
}
2. 匿名函数
var x = function (){
return undefined
}
3.
var x = function y(){
// 此时的y只在函数内部存在
return undefined
}
console.log(y) // not defined
4.构造函数
var x = new Function('return undefined') // 不带参数
var x = new Function('x','y','return x+y') // 带参数
5.箭头函数
var x = (x,y) => { return x + y } // () 内的为参数,{} 内的为函数体
var x = (x,y) => x + y // 当函数体只有一个 return 语句时可以不写 '{}' 和 'return'
var x = x => x*2 // 当参数只有一个时,可以省略 '()'
所有函数都有name属性,按照上面的顺序分别时
- x.name='x'
- x.name='x'
- x.name='y'
- x.name='anonymous'
- x.name='x'
函数的使用
JS 将函数的函数体和参数存储在内存中,通过 Function.prototype 中的 call() 属性来调用,而我们日常使用最多的 () 则是它的语法糖。
var f = function(x,y){
return undefined
}
f(1,2)
f.call(undefined,1,2) // 两者相等
在 call() 的参数中,一个参数在函数中可以用 this 得到,之后的参数则可以使用 arguments 以数组的形式得到。
var f = function(x,y){
console.log(this)
console.log(arguments)
}
f.call(1,2,3)
// 1
// [2,3]
在普通模式下,如果一个参数传入 undefined,this 的值是 window 全局变量,而在严格模式下,则就是 undefined。