Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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函数时,名称是一个特殊属性吗 函数名(firstname) { 警报(“您的名字:+firstname”); }_Javascript_Html - Fatal编程技术网

在处理JavaScript函数时,名称是一个特殊属性吗 函数名(firstname) { 警报(“您的名字:+firstname”); }

在处理JavaScript函数时,名称是一个特殊属性吗 函数名(firstname) { 警报(“您的名字:+firstname”); },javascript,html,Javascript,Html,这在Chrome/IE8中不起作用。IE8状态对象不支持此操作。这与函数名为name有关。如果我将函数的名称更改为它工作的人…会得到什么?“名称”是中定义的窗口(全局)对象的属性。它不是一个保留的JavaScript单词(您可以找到保留关键字的列表),但由于它是在HTML5中定义的,因此对于为HTML页面开发的JavaScript代码,使用“name”作为函数/变量名是不可取的。在前面的答案上展开(对不起,我还不能评论!),name并不完全是一个保留单词 https://developer.m

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

“名称”是中定义的窗口(全局)对象的属性。它不是一个保留的JavaScript单词(您可以找到保留关键字的列表),但由于它是在HTML5中定义的,因此对于为HTML页面开发的JavaScript代码,使用“name”作为函数/变量名是不可取的。

在前面的答案上展开(对不起,我还不能评论!),name并不完全是一个保留单词

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/name

Chrome将这一行误解为试图访问匿名函数(由内联事件处理程序创建)


您可以通过执行以下操作来获得预期的行为

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

这是因为
窗口
对象(即全局范围)已经有一个名为
名称
的属性


name
name
不是保留关键字,在其他范围内(例如局部变量)也可以正常工作。但是,您应该避免使用它,因为您可能会无意中使用
窗口中的属性而不是变量。

它不是保留字,并且它与
窗口.name
冲突。在IE中使用
窗口
属性名称作为全局变量存在问题,但只要使用
var
函数
关键字将其声明为全局变量就可以了

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

<input type="button" value="Do it" onclick="window.name('aaron');"/>

工作正常。

也许你应该根据函数的功能来命名,而不是用一般的词来命名。。比如printName、print_name等@fazo是的,我应该……但这并不能解决问题的原因……为什么要投否决票?如果你不解释你认为错误的地方,它就无法改善答案。无论如何,为了验证这个理论,它被当作局部var处理?通过输出…等…?如果您写入
名称
,您会发现您并没有意外地全局或写入
窗口。名称
,因为从处理程序外部的脚本中可见的
名称
没有改变,而是按钮的字段名发生了更改。如果你说
onclick=“value='hello'”
这会让事情变得更清楚。
<input type="button" value="Do it" onclick="window.name('aaron');"/>
<input name="foo" value="bar" onclick="alert(name+': '+value)"/>  // foo: bar
<input id="doit" type="button" value="Do it"/>

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