js之函数
函数也是一种特殊对象,函数中封装了特定代码的执行JSON.stringify() 就是一个函数。
1.函数的定义(公式)
1)函数声明
function x(a){
console.log('hello',a);
}
2)函数表达式
var x =function(a){
console.log('hello',a);
}
两种函数定义的区别:
a.函数声明会提升,在函数声明前可以调用该函数
b.函数表达式会提升表能量名,提升后变量名指向undefined,所以无法在函数赋值前调用该函数
2.函数调用(调用公式)
var foo = function (a,b,c){
console.log(this,a,b,c); //this---->foo
}
1)foo(1,2,3)
2)foo.call(this,1,2,3);
3)foo.apply(this,[1,2,3]);
4)new Object();
3.函数的内部属性
属性值只有在函数运行时能被确认,只有在函数内部才能调用的属性:
1)形参
2) this --->环境对象
sayHello(); this--->window/global
obj.sayHello(); this --->obj 谁调用指向谁
3)arguments
类数组对象
1.length 属性,可以获取数组长度
2. 可以通过下表访问元素
3.对象体现在它可以有特有属性 arguments.callee(指向当前函数) ----递归调用,调用自己
eg :function add(a,b){
var result =a+b;
return result;
} var result =add(1,2)
js函数内存图
4.函数的应用
1)函数作为参数(回调函数)
2)函数作为返回值。
如以下,对于一个人的信息数组的排序,就用到了函数作为参数,和函数作为返回值
以上代码中level既是一个函数的形参,又是作为对象的属性名而存在的,a[level] 即a.level 只不过在使用[ ]访问时,要使用a["level"],而我们可以 var level ="level",使代码的复用性提高。