美文网首页
027进阶函数-02 函数的五种声明方式

027进阶函数-02 函数的五种声明方式

作者: 夜未央_M | 来源:发表于2019-01-07 17:03 被阅读5次

第一种:具名函数

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

相关文章

网友评论

      本文标题:027进阶函数-02 函数的五种声明方式

      本文链接:https://www.haomeiwen.com/subject/chaurqtx.html