2010-08-03 76 views
4

作为一个完整的Javascript新手,我被可能看起来像简单的概念给那些称为Stackoverflow主页的全能JavaScript overlords所挑战。Javascript中的函数名称(e)

我的问题不是真的问题。当我在做我的javascript在我的代码编辑器下来贫民窟我经常会看到这样的东西

function name(e) { 

    if(e.KeyCode) { 
     .... 
    } 
} 

是什么做这个目的?这与刚做if(KeyCode)有什么不同?什么是e

谢谢:)

回答

4

似乎这个函数是在触发一个特定的事件(在这种情况下,我猜它是键盘相关的; e代表事件或事件数据)被浏览器(或任何)调用。

所以一旦被触发,调用者将传递事件结构作为参数(复制到e)。 JavaScript不会为特定的调用定义任何本地/全局变量,所以KeyCode不会被定义,但e包含该变量。

4

e这里是事件。请注意,字母e并不重要,它只是一个参数名称。你可以称它为任何东西,但是e是标准的,并且使其他人阅读你的代码时很明显。

例如:

<input type="text" onkeyup="doSomething(event)"/> 

function doSomething(e) { 
    alert('you pressed key:' + e.keyCode); 
} 

所以e.keyCode告诉你哪个键被按下。

+0

'keyCode',而不是'KeyCode'。 – 2010-08-03 16:15:50

+0

哎呀,谢谢蒂姆。我只是从OP复制它。现在更正:) – fearofawhackplanet 2010-08-03 16:22:35

1

e是传递给函数在大多数情况下,事件对象,它的检查中传递的事件对象的keyCode财产

例如在Firefox中,你可以这样做:

document.onclick = myFunction; 
function myFunction(e) { 
    //e is the click event object 
    //e.keyCode, e.target, etc. 
} 

这是可行的,因为默认情况下,它将事件作为第一个参数传递给处理程序。对于你的例子,这是否更清楚?

function name(someObject) { //or event, or any name works 
    if(someObject.keyCode) { 
+0

你需要讨厌的'e = e || window.event'的东西在这里为IE浏览器。 – 2010-08-03 16:16:35

0

“e”是一个参数 - 一个事件对象 - 当它被调用时传递给函数。

0

这是一个事件对象。阅读关于Events

1

KeyCode未定义(本身)。它是e的财产或属性,所以你必须用e.KeyCode来调用它。 e是(推测)是一个事件对象。也许你应该刷上OOP

+0

'keyCode',而不是'KeyCode'。 – 2010-08-03 16:17:35

+0

@Tim:就这样写了他的样子。 C#约定以一封上限字母开始......忘了JS所做的事情。 – mpen 2010-08-04 01:45:30

0

e =传入函数的事件的简写变量名称。