@llqintel
2014-12-01T06:37:55.000000Z
字数 895
阅读 989
js基础 周分享 js高级程序设计
大纲
1.1定义函数的一些写法:
//使用函数声明语法定义function sum(x,y){return x + y;}
//通过函数表达式来定义var sum = function(x,y){return x + y;};
//使用Function构造函数,最后一个参数被看作是函数体//不推荐var sum = new Function("x","y","return x + y");
alert(typeof sum);alert(sum instanceof Object);
A1. 函数是js对象之一(Function)
1.2 进一步探究
function sum(x,y){alert(x + y);}var aSum = sum;aSum(10,10);//------------------------------------------------sum = null;aSum(10,10);//?
图
A2. 属于引用类型,函数名是指针
重载条件:函数名相同&&(参数个数不定 || 参数类型不同)
function sum(x,y,z){alert(x * y);}sum(10,10,10);//结果是:20? 100?
Q1: 如何弥补这一"缺陷"?
3.1 理解参数
sum('10',10,10);//?sum(10,10,10,10,10);//?
不介意传递进来多少个参数,也不在乎传进来的参数是什么类型
原因:A3. 参数的内部用一个数组来表示
ps:类似于java的不定参数
Q2: 可能会带来哪些问题?
3.2 内置对象
arguments : 指向实参对象的引用(类数组对象)
function sum(){console.log(arguments);}sum(1,2,3);
function sum(){var n = 0;for(var i= 0,len= arguments.length;i<len;i++){n+= arguments[i];}alert(n);}sum(1,2);sum(1,2,3);