方法一:具名函数函数
function f(parameter){ return undefined }
函数都会有一个返回值,不写,默认返回undefined
。由于一个函数必需要有一个终止的语句
注意:consol.log()
永远返回undefined
,它打印什么和返回的没啥关系。this
var a = 1,2 //报错 var a = (1,2) //a 的值为 2 var a = console.log(1); //a 的值是 undefined var a = (1, console.log(2)) //a 的值是 undefined
方法二:具名函数给一个参数code
var x = function f(parameter){ return undefined }
区别:
方法一:可在全局访问函数f
。对象
consol.log(f); // f(parameter){ return undefined }
方法二:只能在函数内部访问f
,在函数外部没法访问。ci
consol.log(f); // 报错
方法三:匿名函数字符串
var f = function(parameter){};
匿名函数必须给一个变量it
方法四:window.Function
函数对象io
new Funciton('x','y','return x+y')
方法五:箭头函数console
f = (x,y) => {return x+y;}
箭头函数是匿名的,只能用变量去存储。
若是只有一句语句,花括号和return
能够一块儿去掉;
若是只有一个变量,可省略圆括号。function
name
属性函数有一个属性————name
function f1(){} f1.name; //f,字符串 var f2 = function (){}; f2.name; //f2,字符串 var f3 = function f4(){}; f3.name; //f4,字符串 new Function('x','y','return x+y'); f3.name; //anonymous,字符串
函数是一段能够反复调用的代码块。
f(1,2) === f.call(undefined,1,2)
f.call()
才是函数的真正调用,模拟下call()
的内部。
var f = {}; f.name = 'f'; f.params = ['x','y']; f.functionBody = 'console.log("fff")' f.call = function(){ return eval(f.functionBody); }; f.call(); //fff
this
和argument
f.call(undefined,1,2); //undefined就是this,[1,2]就是argument
call
的第一个参数能够用this
获得call
的第二个参数能够用argument
获得
function f(){ console.log(this); //this 是参数 1 } f.call(1); //Number 对象 1
function f(){ 'use strict'; //严格模式 console.log(this); //this 是参数 1 } f.call(1); //1,严格模式模式下参数是啥就打印啥
function f(){ console.log(this); //this 是参数 undefined,没有就是 undefined } f.call(); //window,不是字符串;严格模式下会打印 undefined