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中永远不会引用任何值,但在另一种语言中可能会引用。然而,这个
确实引用了一个值,事实上它总是引用。在我们担心标识符声明的语义限制之前,理解标识符是很重要的。