Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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函数将'this'作为参数传递时出错_Javascript - Fatal编程技术网

JavaScript函数将'this'作为参数传递时出错

JavaScript函数将'this'作为参数传递时出错,javascript,Javascript,函数日志(此){ console.log(this); }此是一个变量名,因此不能用作变量名 如果要覆盖函数的此值,可以使用调用或应用 函数日志(){ console.log(this); } apply({custom:“this value”})此在该语言中具有特殊意义。它是一个标识符,但只能在特定情况下自动定义,而不能由开发人员显式定义 自动定义的其他标识符仍然可以由开发人员定义,如参数、未定义和窗口,但在大多数情况下应该避免使用 为了更清楚,在编程中,标识符是程序员用来引用值的标签

函数日志(此){
console.log(this);
}
是一个变量名,因此不能用作变量名

如果要覆盖函数的
值,可以使用
调用
应用

函数日志(){
console.log(this);
} 

apply({custom:“this value”})
在该语言中具有特殊意义。它是一个标识符,但只能在特定情况下自动定义,而不能由开发人员显式定义

自动定义的其他标识符仍然可以由开发人员定义,如
参数
未定义
窗口
,但在大多数情况下应该避免使用


为了更清楚,在编程中,标识符是程序员用来引用值的标签

在JS中,
这个
实际上是一个关键字,根据ECMAScript语义,它阻止它被显式声明为标识符。这并不意味着它根本不是一个标识符,因为它总是让程序员引用一个值


因此,关键字并不意味着它不是标识符。这确实意味着,尽管在JS中,您没有显式声明具有该名称的标识符的选项,尽管其他语言有时也允许这样做。

是javascript中的保留关键字。它不能用作函数参数,但可以在函数中使用,其值取决于调用函数的方式。对于
关键字的进一步解释,read是它们重写此规则的任何方式。否。在任何给定的语言中,通常都有某些关键字是不能使用的,而在JavaScript中,则不能以这种方式使用
this
。例如,你也不能使用
函数
。谢谢你,这很有帮助。实际上它不是一个标识符。这是一个保留的关键字。@Bergi:不承认它作为标识符的作用,就等于在语义上进行迂腐的狡辩。在使用中,它与任何其他标识符一样是一个变量标识符,但我们不能显式声明它。你是对的,这不是因为我们不能将其声明为变量,而是因为我们不能将其声明为对象属性标识符。实际上,它是一个变量标识符,与函数参数非常相似,但有一些限制。你对“标识符”这个词的理解主要集中在一个特定的文本上,而不是在编程中通常被理解为标识符的内容上,后者是一个引用数据的标签,这正是
this
的含义。甚至维基百科也说“哪些字符序列构成标识符取决于语言的词汇语法。”而这个问题是关于JavaScript的,所以请允许我重点关注这个上下文。我并不否认“这一点”可以是一般意义上的标识符。@Bergi:是的,某些字符序列可能根本不能用作标识符。例如,
@#
是一个字符序列,在JS中永远不会引用任何值,但在另一种语言中可能会引用。然而,
这个
确实引用了一个值,事实上它总是引用。在我们担心标识符声明的语义限制之前,理解标识符是很重要的。