javascript引用类型基础讲解
程序员文章站
2022-05-17 14:54:23
引用类型
function类型;
1,命名方式:
函数声明语法定义: function sum(){} 函数表达式定义: var sum = function(){}; fu...
引用类型
function类型;
1,命名方式:
函数声明语法定义: function sum(){} 函数表达式定义: var sum = function(){}; function构造函数:var sum = new function("num1","num2","return num1 + num2");//因为会导致解析两次代码(一解析常规ecmascript代码,二解析传入构造函数中的字符串),影响性能
2 没有重载,同名函数后者会覆盖前者
3 函数声明和函数表达式的区别:解析器会先读取函数声明,并在执行任何代码之前可用;而函数表达式需要等到解析器执行到所在代码行,才会被解析执行
alert(sum(10,10)); function sum(num1,num2){return num1+num2} //但是 函数表达式会报错 var sum = function(num1,num2){return num1+num2}; //报错
4 可作为值
因为函数名本身就是变量,可用作为参数传给另一个函数,也可以作为另一个函数的结果返回
function add(num){return num+10;} var result = callsome(add,10);//函数作为参数 console.log(result);//20 //--------函数作为另一个函数的结果返回--------------------- function test(prop){ return function(obj1,obj2){ var value1 = obj1[prop]; var value2 = obj2[prop]; if(value1 < value2){ return -1; }else if(value1 > value2){ return 1; }else { return 0; } }; } var data = [{name:"nick",age:10},{name:"lick",age:20}]; data.sort(test("name")); console.log(data[0].name + "||" + data[0].age);//lick||20 data.sort(test("age")); console.log(data[0].name + "||" + data[0].age);//nick||10
5函数内部属性:这里有两个特殊对象
1)arguments:保存函数参数;关于callee属性,它是一个指针,可以指向这个arguments对象的函数;
//消除耦合现象 function test(num){ if(num<=1){return 1;}else{return num*arguments.callee(num-1)} }
2)this:引用对应函数执行环境对象
6函数属性和方法:
1)length属性表示接受参数的个数function test(num){alert(num);} alert(test.length);//1
2)prototype
3)apply()
4)call()