e是一个形参,代表event,事件对象。。你可以console,log(e),试试。
比如说点击事件,你需要获取被点击对象是谁?或者点击的(x,y)坐标等等,事件对象就可以派上用场啦
这里的e是参数的名字。
参数分为
形参:形式参数,相当于函数声明的局部变量,实参把自己的值赋给形参,形参就保存了这个值,形参只能在函数内部使用。
实参:实际参数,函数的调用者把值放在实参里面,传给函数的形参。
所以,实参、形参就相当于一个管道,一个接口,使调用函数的人可以通过这种方式把要计算的值传给函数去计算。
你的举例中,写代码的人为了方便起见,给每个函数都写了个名字为e的形参,至于为什么每个函数中e的用法不同,是因为函数本身干的工作就不同,所以他们使用e的方式就不同。
其实,javascript中形参和实参没有任何关系,你可以定义2个形参,实际传入5个实参,因为js的函数是读取arguments对象来获取参数的,而不是从命名形参读取参数。所以,函数中写不写形参,写几个形参其实不重要,这个你以后可以学到。
在定义函数function的括号里面,是形式参数,是随意命名的;当你在调用这个function时,括号里面使用的时实际参数。
定义一个方法:
function add(a,b) {
return a+b;
}
使用该方法:
var sum = add(2,3);
console.log(sum); //计算2+3的值
楼主大抵是不太清楚这些函数是怎么被调用的。
楼主列出的都是事件处理函数,也就是说,你写一个 onEdit (e) { ... }
的函数,并不需要你手动去调用这个函数,而是浏览器或者某个库自动在某个时刻调用你预先定义的 onEdit
函数。
那么就会出现一个问题,不同的事件触发的时候,你需要获取的数据是不同(比如鼠标和键盘事件的数据肯定就不同),所以他们调你的 onEdit
函数的时候,会把「e」作为参数传入,这样你就能获取不同事件的数据了。
我估计是回调函数没理解好,
举个例子:
//Array.prototype.sort的一种用法是传进一个函数判断大小返回布尔值
var arr = [5,2,4,3]
var sortFunc = function(a, b) {
return a - b
}
console.log(arr.sort(sortFunc)) //排序好了
//那sortFunc里面的a,b从哪里来的?
//在Array.prototype.sort里面有具体实现,
//糟糕,写不出冒泡排序...
Array.prototype.sort = function(fn) {
for(var i=0; i<this.length; i++) {
for(var j=i+1; j<this.length;j++) {
//很难受
var bool = fn(this[i], this[j]) > 0
if(bool) {
//换
}
}
}
}
//重点在于fn是Array.prototype.sort的形参,实参是sortFunc,
//sortFunc接收俩参数,这是Array.prototype.sort决定的,因为其调用
var bool = fn(this[i], this[j]) > 0//这句话就是调用了sortFunc,
//this[i,j]分别对应sortFunc形参的ab,
以上是蒙的sort代码,错了大家可以喷我。
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
只是型参简写,用法你得看具体实现的代码。。。