Javascript - 函数名称中需要下划线吗?

标签 javascript html

我对这段代码没有任何问题,但我很好奇为什么下面的函数名称中似乎需要一个下划线。

function _clear()
    {
        document.getElementById("test").innerHTML =  "";
    }

如果函数名称包含下划线,则函数 _clear() 仅在单击按钮后执行。

<button type="submit" onClick="_clear()">Clear</button>

最佳答案

根据MDN ,clear() 是 Document 对象的一种方法,可以通过编写 document.clear() 来调用该方法。 。但是,由于此方法已被弃用,因此根本不应该调用它。事实上,在 HTML5 中,该方法不执行任何操作(请参阅 HTML5 spec )。

因此,在实际从 Document 对象中删除该方法之前,人们可能会得出这样的结论:用户定义的函数与 Document 的方法同名可能存在潜在冲突。也就是说,以下代码使用 Google Chrome(版本 49.0.2623.112 m)运行得很好:

var d = document;
d.g = d.getElementById;

function clear()
{
        d.g("test").innerHTML =  "";
    }

var test = d.g("test");
test.onmouseover=clear;

参见demo

clear() 和 document.clear() 之间不太可能发生冲突。我编写了一个用户定义的函数,它使用与另一个文档方法相同的名称,并且代码运行完美;请参阅here .

显然,当 onclick 事件属性被赋予用户定义函数“clear()”时,与 document.clear() 关联的clear() 存在某种困惑。 ;请参阅here并阅读官方答案中的精彩解释。简而言之,问题归结为“...Document 对象位于 Window 对象之前的作用域链 (...)”(请参阅​​ JavaScript: The Definitive Guide )。

如果由于某种原因您确定代码可以正常工作,请按以下步骤指定正确的上下文:

HTML:

<div id="test">a test to see if this will clear</div>
<button id="but" onclick="window.clear()">Clear</button>

因此,用户定义的函数实际上成为 Window 对象的一个​​方法,与 window.open() 等内置方法一起,允许代码执行;请参阅here .

请注意,发生点击事件时执行操作的最佳方法是将此行放入 JavaScript 代码中,并给定一个 id 为“but”的按钮:

but.addEventListener('click',clear);

参见demo .

关于Javascript - 函数名称中需要下划线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44452479/

相关文章:

javascript - 如何从 moment.js 获取两位数的周数?

javascript - 简单的 Javascript 语法表现异常

javascript - 如何获得带有选择/取消选择所有功能和不确定值的 angular.js 复选框?

javascript - 切换 setLineDash()

html - 导航栏中的中心图像

javascript - 使用来自 JSON 的 Google Charts API 创建饼图

javascript - Meteor.js 循环数组以检查集合文档中是否已存在值

php - Paypal/cgi-bin/webscr 表单数据

html - html属性和值之间的空格?

html - 如何将表格包含在 div 中