eri*_*dal 11 javascript language-design
这个剪辑将在nodejs和浏览器上没有任何抱怨的情况下运行:
this.return = function ( x ) {
return x
};
console.log ( this.return(1) );
Run Code Online (Sandbox Code Playgroud)
我期待它因语法错误而难以理解.
我的意思是,我能理解为什么this['return']有效......但我总是这return是一个词法分析器?
javascript是一种上下文敏感的语言?
补充说:重点是词法分析器没有T_RETURN标记,但它使用了一些T_STRING.是不是?
ade*_*neo 10
return是一个保留的关键字,但保留的关键字可以作为属性访问器使用,没有问题,这通常是不好的做法.
保留关键字可能不会被用作数组和对象的变量,函数,方法或标识符的名称,因为ECMAScript为它们指定了特殊行为:
来自ECMAScript脚本的源文本从左向右扫描并转换为一系列输入元素,即令牌,控制字符,行终止符,注释或空格.
ECMAScript还定义了某些关键字和文字,并具有自动将分号插入到结束语句的规则.
保留字实际上仅适用于标识符(与标识符号对比).
如ES5中所述,这些都是不排除ReservedWords的IdentifierNames.
a.return
a["return"]
a = { return: "test" }.
Run Code Online (Sandbox Code Playgroud)
然而,这些不是
function return() {}
var return;
Run Code Online (Sandbox Code Playgroud)
是的,return 是一个关键字。您已经定义了一个属性,并且实质上使用了一个名为 return 的字符串。如果你实际上使用了 return 它会导致错误
var return = "error";//Uncaught SyntaxError: Unexpected token returnRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |