Javascript 为什么可以';我使用名为';评估';在HTML中?
我有点好奇为什么这样不行 JavaScript:Javascript 为什么可以';我使用名为';评估';在HTML中?,javascript,html,Javascript,Html,我有点好奇为什么这样不行 JavaScript: function evaluate(){ console.log(42); } HTML: 点击我! evaluate是html端的保留关键字吗?evaluate不是保留关键字,但在内联事件处理程序中使用时,它与文档的evaluate函数发生冲突(文档对象在窗口对象之前在处理程序的作用域链中)。如果不想更改函数名,只需在其前面添加窗口上下文即可,即 单击我!文档。解析XML时需要使用evaluate,请参阅。evaluate在Java
function evaluate(){
console.log(42);
}
HTML:
点击我!
evaluate是html端的保留关键字吗?evaluate不是保留关键字,但在内联事件处理程序中使用时,它与文档的evaluate
函数发生冲突(文档
对象在窗口
对象之前在处理程序的作用域链中)。如果不想更改函数名,只需在其前面添加窗口
上下文即可,即
单击我!
文档。解析XML时需要使用evaluate
,请参阅。evaluate在JavaScript中不是一个,用于计算表达式
如果使用一种不太显眼的方法连接事件处理程序,您仍然可以将函数命名为evaluate
:
var evaluate = function (){
console.log(42);
}
document.addEventListener('click', evaluate, false);
有趣。Chrome没有显示任何内容,但是Firefox抛出了
NS\u ERROR\u XPC\u not\u ough\u ARGS:ARGS:not ough arguments
。这可能是因为两个不同的原因。这很奇怪。我以为它是eval()的别名,但我可以使用eval调用该函数。看到了吗?我不知道为什么不能调用evaluate()直接的。我也认为它可能是一个保留关键字或其他东西。另一个相关事实的可能重复是,事件处理程序运行时,文档和目标节点的属性被拉入范围。@Mike:你对此有参考吗?@FelixKling,19.1.6 of。你可以在
中看到这一点。@Mike:谢谢!现在你提到了它,我记得我以前见过它。奇怪的是,我在任何规范中都找不到任何东西。@FelixKling,是的。从那本书中,“作用域链的精确组成从未被标准化过,并且依赖于实现。Netscape 6和Mozilla包括所有包含的对象(甚至是像
标签之类的东西),而IE 6坚持使用一个更为最小的集合,其中包括目标元素,再加上包含表单对象(如果有的话)和文档对象。
var evaluate = function (){
console.log(42);
}
document.addEventListener('click', evaluate, false);