函数的五种声明方式.
- 具名函数
function a(x){ console.log(x); return undefined; } /*console.log()只接受字符串,如果不是字符串会自动调用toString()方法. 得到"function a(x){console.log(x)}"*/ -
匿名函数
var a = function(x)( console.log(x) ) -
var x = function y(input1,input2){}和直接声明具名函数的区别是如果执行
console.log(y)会提示 y is not defined.如果执行console.log()则会打印出函数的内容. - window.Function
q = new Function('x','y','return x+y'); q(1,2); //结果为3 var n = 1; q = new Function('x','y','return x+'+n+'+y'); q(1,2); //结果是4 - 箭头函数
f1 = (x,y)=>{return x+y} f1(6,6); //结果是12 //只有一句语句时可以省略花括号和return f2 = (x,y) =>x+y; f2(1,2); //结果是3 //只有一个参数时小括号也可省略 f3 = x => x*x; f3(3); //结果是9
函数是一段可以反复调用的代码块.
eg:
function triangleArea(h,w){
var n = h*w;
var m = n/2;
return m;
}
triangleArea.call(undefined,1,2); //结果是1
以上就是一个能求三角形面积的函数.
那么什么是this,arguments呢?triangleArea.call(undefined,1,2); 中的
下面举例说明:
- undefined就代表this.
- 后面的参数就可以用arguments来表示.
f = function(){
'use strict';
console.log(this);
console.log(arguments);
}
执行f.call(1,2,3);得到如下结果.
Array.prototype就是伪数组.它的__proto__指向Object.prototype.
什么是闭包呢?
var a = 1;
function b(){
console.log(a);
}
向上面这种一个函数使用了它范围外的变量,那么这个函数与这个变量合称闭包.