JavaScript的“返回”真的是一个*关键字*吗?

is javascript's `return` really a *keyword*?

本文关键字:一个 关键字 返回 真的 JavaScript      更新时间:2023-09-26

这个snip将在nodejs和浏览器上运行而不会有任何抱怨:

this.return = function ( x ) { 
    return x 
};
console.log ( this.return(1) );

我预计它会因语法错误而失败。

的意思是,我能理解为什么this['return']有效......但我总是认为return词法分析器关键字?

JavaScript 是一种上下文相关的语言吗?

补充:关键是词法分析器没有T_RETURN令牌,但它使用一些T_STRING。不是?

> return 是一个保留关键字,但保留关键字可以毫无问题地用作属性访问器,这样做通常是不好的做法。

保留关键字不能专门用作变量、函数、方法或数组和对象的标识符的名称,因为 ECMAScript 为它们指定了特殊行为:

来自 ECMAScript 脚本的源文本从左到右扫描,并转换为一系列输入元素,这些元素是标记、控制字符、行终止符、注释或空格。

ECMAScript 还定义了某些关键字和文字,并具有自动将分号插入到结束语句的规则。

保留字实际上仅适用于标识符(相对于标识符名称)。
ES5 中所述,这些都是不排除保留字的标识符名称。

a.return
a["return"]
a = { return: "test" }.

然而,这些不是

function return() {}
var return;

更多关于 MDN 的信息

是的,return 是一个关键字。您已经定义了一个属性,并且实质上使用了一个名为 return 的字符串。如果您实际使用退货,则会导致错误

var return = "error";//Uncaught SyntaxError: Unexpected token return