第一种:具名函数
function x(input1, input2){
return undefined // 一个函数必须有一个终止的程序,就是 return,如果你不写,那么浏览器也会帮我们加上。
}
这里的(input1, input2)是2个变量,function是一个关键字,和 var 的作用是一样的,var 是声明一个变量,function 是声明一个函数,那么变量和函数有什么区别呢?
1.变量可以包含7种数据类型 (Boolean、Null、Undefined、Number、String、Symbol、Object)
2.如果 function x, 那么这个 x 就一定是一个函数,也就是说这是一个特别的变量, x就是这个函数的名字,我们可以通过consolo.log(x)给输出出来。 我们原来说过 consolo.log只接受字符串,如果不是字符串,则会自动调用 x.toString()方法来得到 string
打印出来的东西 和 return 的东西没有任何关系,不要认为打印出来什么就返回什么!!!
第二种:匿名函数 (没有名字且将函数赋值给一个变量)
function (input1, input2){
return undefined
}
上述的例子中,如果单独的去写一个匿名函数的话是会报错的,匿名函数必须赋值给一个变量才可以。
第三种:具名函数赋值给一个变量
var x = funciton y(input1, input2){}
那么var x = funciton y(input1, input2){} 和直接声明一个 funciton y(){} 有什么区别呢?
第四种:window.Function 函数对象(程序员一般不会采用此方法)
new Function('第一个参数', '第二个参数', 'return x+y')
Function构造函数接受三个参数,除了最后一个参数是add函数的“函数体”,其他参数都是add函数的参数。
你可以传递任意数量的参数给Function构造函数,只有最后一个参数会被当做函数体,如果只有一个参数,该参数就是函数体。
“函数体”部分用字符串表示,字符串是可以拼接的,拼接的过程中可以加变量
new Function('x', 'y', 'return x+y')
var n = 1
f = new Function('x', 'y', 'return x +' +n+ '+y' )
//等同于 f = new Function('x', 'y', 'return x + y +' +n)
//上面单引号里面的+表示运算+ 外面的+表示拼接,整个拼接之后就是 return 1+2+1
//那么 f(1, 2)的值为 4
Function构造函数可以不使用new命令,返回结果完全一样。总的来说,这种声明函数的方式非常不直观,几乎无人使用。
第五种:箭头函数(比较炫酷的)
注意:箭头函数一定是匿名的,这个语法就没有给我们写名字的地方。
f = (x, y)=>{return x+y}
//等号右边的是一个匿名函数(箭头函数)
例
sum = (x, y) => { return x+y }
//★★★★如果花括号内只有一句执行内容
//那么这个花括号和 return可以去掉 ,等同于如下:
sum = (x, y) => x+y
//★★★★★如果参数只有一个的话,那么圆括号也可以不要,如下:
n2=n =>n*n
总结一下
function f(x, y){return x+y}
f = function{}
f = function x(){}
f = new Function('x', 'y', 'return x+y')
f = (x, y) => x+y
网友评论