前言
- 在javascript中,有着一种被称为作用域(scope)的特性。它也是理解闭包的前置知识,本文着重于理解作用域,以便在下一篇文章中,学习并理解闭包。
作用域(Scope)
作用域是什么?
- 作用域是指在程序中定义变量的区域,该位置决定了变量的生命周期(和函数作用域、块级作用域相关)。通俗的理解,作用域就是变量与函数的可访问范围,即作用域控制着变量和函数的可见性和生命周期。而作用域又分为全局作用域、函数作用域和块级作用域。
1.全局作用域
- 一个 html 页面就是一个全局作用域,打开页面的时候, 作用域就生成了, 关闭页面,全局作用域关闭。任何地方都能访问到的对象拥有全局作用域。在函数外面定义的变量就属于全局变量,拥有全局作用域。此外,window的属性也拥有全局作用域。
例如下段代码中, i 就存在于全局作用域。
var i = 1;
function fun() {
console.log(i);
}
fun()//输出1
学习到这里时,突然想到一个有意思的问题:在不通过 get/post 等方式提交的情况下,如何将全局作用域如何跨页面引用到变量呢?
向老师的讨教后,终于得到了想要的结果。
在一个HTML文件里script
块中写下
var name = '小王';
window.localStorage.setItem('username',name)//本地储存
打开浏览器控制台输入 name 得到下图,关闭当前HTML窗口
在另外一个HTML文件script
块中写下
var name = localStorage.getItem('username');
console.log(name);//小王
打开浏览器控制台得到下图