为什么我不能在HTML中使用被称为'evaluate'的JS函数?

时间:2013-02-07 16:01:36

标签: javascript html

我有点好奇为什么这不起作用

JavaScript的:

function evaluate(){
    console.log(42);
}

HTML:

<a onclick="evaluate()">Click Me!</a>

在html端的某处评估保留关键字?

3 个答案:

答案 0 :(得分:3)

“evaluate”不是保留关键字,但是当它在内联事件处理程序中使用时,它碰巧与文档的evaluate函数碰撞(document对象在处理程序中范围链之前 window对象)。如果您不想更改您的函数名称,只需在它之前添加window上下文,即

<a onclick="window.evaluate()">Click Me!</a>

答案 1 :(得分:3)

解析XML需要

document.evaluate,请参阅the reference in the MDN here

答案 2 :(得分:3)

评估不是JavaScript中的reserved worddocument.evaluate用于评估XPath表达式。

如果你使用一种不那么突兀的方法来附加你的事件处理程序,你仍然可以命名你的函数evaluate

var evaluate = function (){
    console.log(42);
}

document.addEventListener('click', evaluate, false);

Example