1.函数如果没有return语句会返回undefined
8.1.2函数表示
[3,2,1].sort(function(a,b){return a-b;};//函数作为另一个函数的参数
let tensquared=(function(x){return x*x;}(10));//立即执行
8.1.3 Arrow functions
使用=>区分参数和函数体,不使用function关键字定义函数,也不需要函数名
con sum=(x,y)=>{return x+y;};//x,y为参数,函数体返回x+y;
如果函数体只有一句return 语句,你可以省略return关键字。
const sum=(x,y)=>x+y;//省略了return关键字
如果只有一个参数,你可以省略函数参数的括号
const polynomial= x=>x*x +2*x+3;//省略了括号,且省略了return关键字
如果函数没有参数,需要用()
const constantFunc=()=>42;//没有参数,返回值恒为42
返回值是对象需要用括号包起来,否则无法区分函数体和对象。两者都是{}
const f=x=>{return {value:x};};//ok
const g=x=>({value:x}});//ok
const h=x=>{value:x};//error return nothing,企图返回键值对
const i=x=>{v:x,w:x}//试图返回对象,但没有{},报错。且语句语法是错误的。
调用高阶函数的传递
let filtered=[1,null,2,3].filter(x=>x!=null);
let squares=[1,2,3,4].map(x=>x*x);