Javascript ECMAScript(ECMA-262 5.1)中“引用”的“基值”是什么?
我一直在试图理解javascript中如何设置Javascript ECMAScript(ECMA-262 5.1)中“引用”的“基值”是什么?,javascript,ecmascript-5,Javascript,Ecmascript 5,我一直在试图理解javascript中如何设置这个值,并发现ECMAScript语言规范非常有用。我正在阅读参考规范类型,发现ECMAScript中的参考由3个组件组成,基本值,参考名称,严格参考标志,以便于理解 我可以从它们的名称中假定什么是引用名称和严格引用标志,但我不明白基值是什么。文档中说基值要么是未定义的,字符串,布尔值,数字和对象,但没有说明如何设置它以及它是什么。我猜它与上下文对象类似。有人能解释一下吗?是的,基本值是引用名称所在的上下文 对于对象属性,这将是对象(有关setter
这个值,并发现ECMAScript语言规范非常有用。我正在阅读参考规范类型
,发现ECMAScript中的参考由3个组件组成,基本值
,参考名称
,严格参考标志
,以便于理解
我可以从它们的名称中假定什么是引用名称
和严格引用标志
,但我不明白基值是什么。文档中说基值
要么是未定义的
,字符串
,布尔值
,数字
和对象
,但没有说明如何设置它以及它是什么。我猜它与上下文对象类似。有人能解释一下吗?是的,基本值是引用名称所在的上下文
对于对象属性,这将是对象(有关setter/getter操作,请参阅)。对于变量,这将是变量环境()。对于不可解析的引用(引发引用错误的东西),这将是未定义的
它没有说明它是如何设置的
Reference
值仅通过很少的操作构建:
- ,指(或其父母之一)
- ,即
…
和[…]
运算符
- 允许对宿主函数的函数调用返回它们
就像@shashank指出的那样,这个
继承了它引用的任何对象的类型。我相信JS中的所有变量都是原型对象
@Shashank:this
的值没有被转换,它不是一个特殊的对象或类型此
是特殊的,因为该值直接从执行上下文引用,而不是从相应的环境记录引用。但是,该值与任何其他值一样。这个问题实际上与这个
没有任何关系。谢谢你的回答。我开始有点明白了。我还读过,它说如果它是null
或未定义的
,这个
值被设置为全局对象。还有一个问题,base value
是否为null
?请注意,thisBinding
与参考值无关。thisArg
只是调用者提供的一个值,在方法调用的情况下决不使用null
,但您也可以使用。否,引用永远不会以null
作为基值来构造null.x
和undefined.x
,标识符引用仅显式传递undefined
。当访问基元上的属性时,基值a布尔值、数字或字符串是什么时候?@Taurusvalue@Taurus不,只有在对引用求值时才会将其装箱(GetValue
),而不是在构造引用时。不,这与引用值与基本值无关,请注意,在调用之前,所有引用都会根据其值进行求值。