将`this`作为参数传递时,JavaScript函数会出错

时间:2018-02-27 16:44:48

标签: javascript



function log(this) {
  console.log(this);
}




它会抛出错误Unexpected token this。那么为什么JavaScript不接受this作为参数?

3 个答案:

答案 0 :(得分:2)

thisreserved keyword,因此无法用作变量名称。

如果您要覆盖某个功能的this值,可以使用callapply



function log() {
   console.log(this);
} 

log.apply({ custom: "this value" });




答案 1 :(得分:0)

this在语言中有特殊含义。它是一个标识符,但只能在特定情况下自动定义,开发人员从不明确定义。

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

为了增加清晰度,在编程中,标识符是程序员用来引用值的标签。

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

因此,某个关键字并不意味着它不是一个标识符。这确实意味着虽然在JS中,你没有选择明确地声明具有该名称的标识符,尽管其他语言有时允许这样做。

答案 2 :(得分:0)

this是JavaScript中的保留关键字,不允许将其作为函数的形式参数。

在调用或调用该函数时,可以将this作为参数传递给函数,但在定义函数时不能作为形式参数传递。



function log(that) {
  console.log(that);
}

log(this); // passed as an argument