Javascript 范围界定和';这';

Javascript 范围界定和';这';,javascript,scope,Javascript,Scope,背景:我主要是一名ruby/rails开发人员。最近我一直在使用JS/Backbone,我经常遇到一些范围问题,这些问题通常会一直困扰着我,直到它神奇地发挥作用 有人能解释/告诉我一个地方,解释JS中的作用域是如何工作的吗 此外,我遇到过使用“that=this”来回避范围界定问题的人。据我所知,它使“that”中的内容成为父范围,因此“that”中的内容可以在更深的范围内访问 我很困惑 在Javascript中,新的局部作用域仅在函数定义中创建。但这没关系,因为函数是对象,可以有自己的属性和函

背景:我主要是一名ruby/rails开发人员。最近我一直在使用JS/Backbone,我经常遇到一些范围问题,这些问题通常会一直困扰着我,直到它神奇地发挥作用

有人能解释/告诉我一个地方,解释JS中的作用域是如何工作的吗

此外,我遇到过使用“that=this”来回避范围界定问题的人。据我所知,它使“that”中的内容成为父范围,因此“that”中的内容可以在更深的范围内访问


我很困惑

在Javascript中,新的局部作用域仅在函数定义中创建。但这没关系,因为函数是对象,可以有自己的属性和函数。

有没有特别容易混淆的示例代码,我们可以帮助您解决?您是否检查了其中的链接?另请参见:通常,在其他函数中定义的函数可以获取外部函数的变量,如
function outer(){var x=7;函数内部(){alert(x);}}
。在这里,
内部
可以“向上”进入
外部
并使用
x
。但是,如果
internal
定义了它自己的
x
,它就不能使用
outer
中定义的
x
,因为标识符
x
wold指的是
internal
自己的
x
(我们说,internal
x
“阴影”是外部的)。这就是
的问题:每个函数都有自己的
,因此它会隐藏可能可用的任何外部
。我们通过将外部
分配给一个新变量来规避此问题。