1、具名函数
function x(input1,input2){
return undefined
}
function相当于var,变量可以是七种类型,而fun只接受函数(相当于特殊变量)。x.toString()能返回整个函数(以字符串形式)。
2、匿名函数
function (input1,input2){
return
}
虽然上面这样写语法没错,但不能单独使用,必须先赋给一个变量。
var x
x = function (input1,input2){
return
}
3、如果用var x= function y(input1,input2){return}会怎样?与function y(input1,input2){return}有什么区别?两个都打印console.log(y)会怎样?
第一条会直接报错。 第一条与第二条的区别在于作用域的问题。假设:
var x= function y(input1,input2){
return
}
console.log(y)
那么,y只在名叫y的函数内有效,区域外无效,所以打出来会是报错:y is not defined。
4、假设 :
n=1
f = new Function('x','y','return x+'+n+'+y')
f(1,2)
//结果会是4,还是'1n2'?
其实这个代码相当于:
f = new Function('x','y','return x+n+y')
或 f = new Function('x','y','return x+1+y')
所以是答案是4。
如果要答案是"1n2",则应该这样写:
f = new Function('x','y','return x+"n"+y')
f(1,2)
//"1n2"
5、箭头函数
箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。
比如:
function (x,y){
return x+y
}
可以写成:
f = (x,y)=>{return x+y}
当它只有一个语句时,还能再简化:
f = (x,y)=>x+y
当然,多个语句时,可以这样写:
f = (x,y)=>{var n=x*3; var m=y*2; return n+m}
n2=(n)=>n*n
如果只有一个参数,还可简化:
n3=n>n*n