Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么可以';我使用名为';评估';在HTML中?_Javascript_Html - Fatal编程技术网

Javascript 为什么可以';我使用名为';评估';在HTML中?

Javascript 为什么可以';我使用名为';评估';在HTML中?,javascript,html,Javascript,Html,我有点好奇为什么这样不行 JavaScript: function evaluate(){ console.log(42); } HTML: 点击我! evaluate是html端的保留关键字吗?evaluate不是保留关键字,但在内联事件处理程序中使用时,它与文档的evaluate函数发生冲突(文档对象在窗口对象之前在处理程序的作用域链中)。如果不想更改函数名,只需在其前面添加窗口上下文即可,即 单击我!文档。解析XML时需要使用evaluate,请参阅。evaluate在Java

我有点好奇为什么这样不行

JavaScript:

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);