相关疑难解决方法(0)

窗口在Javascript中真的是全局的吗?

在浏览器中使用这段Javascript:

<script>

console.log(window.someThing);
var x = 12;

function foo() {
   window.otherThing = x;
}

</script>
Run Code Online (Sandbox Code Playgroud)

foo我们可以访问的内部window,我们都知道,但为什么呢?

  • 它是某种特殊的全局变量吗?
  • 或者"根作用域"(在script标记内)是否将它作为隐式局部变量,它是否只是"闭包继承",因为任何其他局部变量(x如上所述)都可以?

那么如何与在script标签内直接声明的变量一致,将其设置为window?的属性?(或者不是这样吗?)

<script>
var x = 12;
function() {
   console.log(window.x);
}
</script>
Run Code Online (Sandbox Code Playgroud)

javascript theory closures scope

26
推荐指数
4
解决办法
2万
查看次数

为什么单独依赖范围链并避免在Javascript中显式引用头对象是有益的?

我一直在读Cody Lindley的这本书"Javascript Enlightenment".在第82页上,他指出:"显式(例如window.alert()vs alert())在性能方面要花费更多.如果单独依赖范围链并避免显式引用头对象,则速度会更快你知道你想要的属性包含在全局范围内."

我有点好奇为什么会这样.我认为这是相反的,因为Javascript解释器可以跳过检查范围并直接找到它.我只是没有看到没有指定某些东西的确切地址是多么有益.

我的意思是,我知道我不打算输入window.whatever()每次我想使用全局范围中包含的东西时,我认为没有指定它会更快.只是不确定为什么.

只是其中一个"想知道"的事情.

javascript scope global

4
推荐指数
1
解决办法
198
查看次数

标签 统计

javascript ×2

scope ×2

closures ×1

global ×1

theory ×1