javascript - name 是处理 JavaScript 函数时的一个特殊属性吗

标签 javascript html

<body>
<script type="text/javascript">
    function name(firstname)
    {
        alert("Your firstname: " + firstname);  
    }
</script>

<form>
    <input type="button" value="Do it" onclick="name('aaron')"/>
</form>
</body>

这在 Chrome/IE8 中不起作用。 IE8 状态对象不支持此操作。它与 name 的函数名称有关。如果我将函数的名称更改为 people 它会起作用...有什么好处?

最佳答案

它不是保留字,而且window.name冲突。在 IE 中使用 window 属性名称作为全局变量存在问题,但只要您使用 var 将它们声明为全局变量就没问题> 或 function 关键字,如此处所示。

这里有一个奇怪的——据我所知,未记录的——IE 怪癖(由 WebKit 复制),在通过内联属性声明的事件处理程序中,目标元素的属性被视为局部变量.这大概是您可以编写如下代码:

<input name="foo" value="bar" onclick="alert(name+': '+value)"/>  // foo: bar

因为说 this.name 显然太难了。 IE 再次试图“方便”导致奇怪的不可预测的错误。

这只是不使用内联事件处理程序属性的另一个原因。没有他们:

<input id="doit" type="button" value="Do it"/>

<script type="text/javascript">
    document.getElementById('doit').onclick= function() {
        name('bob');
    };
</script>

工作正常。

关于javascript - name 是处理 JavaScript 函数时的一个特殊属性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4006323/

相关文章:

javascript - HTML5 websockets 与可访问性标准的兼容性如何?

javascript - Angular2 版本的 knockout 的 computed observable

html - 如何左右对齐html和css中的每个备用列表项以及元素符号

html - 一个 :visited behaving strange in browsers ( works in IE 10 tho. 。)

javascript - 使用 Gson 将属性添加到 Json 数组

javascript - 在 JavaScript 中创建多个按钮

html - Id a div 有一个特定类别的孙子

html - 浏览器缓存选择标签状态并忽略选择的 ="true"

javascript - Angular JS 将 html 页面嵌入为小部件

javascript - 这些导出在功能上是否相同?