js系列九:作用域与作用域链

在javascript中,作用域是用来规定变量与函数可访问范围的一套规则。
作用域
最常见的作用域有两种,分别是全局作用域与函数作用域。
全局作用域中声明的变量与函数可以在代码的任何地方被访问。
一般来说,以下三种情况拥有全局作用域。
1 全局对象下拥有的属性和方法

window.name
window.location
window.top
window.window

2 在最外层声明的变量与方法
我们知道,全局上下文中的变量对象实际上就是window对象本身,因此在全局上下文中声明的变量与方法其实就变成了window的属性和方法,所以他们拥有全局作用域。

var foo = function() {};
var str = "out variable";
var arr = [1,2,3];
function bar() {};

3 在非严格模式下,函数作用域中未定义但是直接复制的变量与方法。
在非严格模式下,这样的变量与方法会自动变成全局作用域对象 window 的属性,因此他们拥有全局作用域。

function foo() {
	bar = 20;
}
function fn() {
	foo();
	return bar + 30;
}
console.log(fn());

在这里插入图片描述
在实践中,无论是从避免多人协作带来的冲突的角度问题,还是从性能上优化的角度考虑,我们都要尽可能少得自定义全局变量和方法。

函数作用域

已标记关键词 清除标记
05-08 1945
05-06 2172
实付 79.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值