[英]What is `base value` of `reference` in ECMAScript(ECMA-262 5.1)?
[英]Why is `Type` of calling function not `reference` in `JavaScript(ECMA-262 5.1)`?
当我试图弄清楚this
关键字的所有详细信息时出现了我的问题。 到目前为止,我了解了如何通过阅读ECMAScript®语言规范第10.4.3节“ 输入功能代码”和“ 11.2.3功能调用 ”来设置该值。 在玩一些代码时,我的问题出现了,请参见下面的代码。
"use strict";
function test(){
alert(this); //undefined
};
test();
根据10.4.3步骤1,给定thisArg
以strict mode
分配给this
值。 并且根据11.2.3步骤7,仅当Type(ref)
不是reference
时,thisArg才是未定义的。
所以我的问题是,为什么在这种情况下Type(ref)
不是reference
?
在这种情况下,步骤7是不相关的,因为它是步骤6之后的else ,它表示:
6,如果Type(ref)是Reference,则
如果IsPropertyReference(ref)为true,则
i。让thisValue为GetBase(ref)。
b。否则,ref的基础是环境记录
i。让thisValue成为调用GetBase(ref)的ImplicitThisValue具体方法的结果。
在您的案例中, test
是一个引用,而不是 PropertyReference,因此使用ImplicitThisValue。 在严格模式下,该值是undefined
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.