作用域决定了变量的可访问性(可见性)。
JavaScript函数的作用域
JavaScript中,有两种作用域类型:
- 本地(局部)作用域
- 全局作用域
在JavaScript中,每创建一个函数都是创建了一个新的作用域。
而作用域决定了其函数内外各种变量的可访问性(可见性)。
定义在函数内的变量,无法在函数外面被访问。
而函数外面定义的变量,可以在函数内被访问么?继续。
局部变量
定义在函数内的变量即为局部变量。作用于本地域。只能在函数内被访问,操作。
// 这里不可以用carName function myFunction() { var carName = "Volvo"; // 这里可以用carName }
由于局部变量只作用于函数内,所以在多个函数内可以使用同样的变量名。局部变量在函数开始执行的时候被创建,在函数执行完毕后被删除。
全局变量
定义在函数外面的变量,具有全局特性。作用于全局,网页当中的所有脚本及函数都可以去访问它。
var carName = "Volvo"; // 这里可以用carName function myFunction() { // 这里也可以用carName }
JavaScript变量
JavaScript中,对象和函数都可以是变量。
作用域决定了变量、对象及函数在各部分代码中的可访问性,可操作性。
自动全局化
如果,您对未声明的变量进行赋值,这个变量将会自动成为全局变量。
看下面的例子:
function myFunction() { carName = "Volvo"; // 定义了全局变量,并进行了赋值操作 }
这个代码示例,声明了一个全局变量carName,即使该值是在一个函数内部赋值的。
Strict Mode(严格模式)
所有的现代浏览器都支持变量在严格模式下运行。例如,我们在函数的第一行加入:use strict,就可以让代码在严格模式下运行。
function myFunction() { "use strict"; // 更多代码 }
“use strict” 指令在 JavaScript 1.8.5 (ECMAScript5) 中新增。
它不是一条语句,但是是一个字面量表达式。
“use strict” 的目的是指定代码在严格条件下执行。
严格模式下你不能使用未声明的变量。
为什么使用严格模式:
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
“严格模式”体现了Javascript更合理、更安全、更严谨的发展方向。
一些在”正常模式”下可以运行的语句,在”严格模式”下将不能运行。
更多关于严格模式的内容在之后的课程中介绍。
全局变量在HTML中
在HTML中,全局变量是一个window对象,所有的全局变量都归window对象所有。
var carName = "Volvo"; // 这里的代码可以用window.carName的方式
警告!
不到万不得已,不要创建全局变量。除非你已经准备好了。因为,你创建的全局变量或者函数会与window变量或者函数冲突。window要比document级别高。对于新手来讲全局变量不好把控。
Javascript变量的生命周期
Javascript变量在函数执行时被创建,函数执行完毕后被删除。在浏览器中,全局变量是在你关闭浏览器窗口或者浏览器标签的时候被删除。但是当你在当前窗口中打开新的一个页面时,该全局变量依然可用。就是说,X站里有一个全局变量,当前窗口打开Y站时,Y站依然可以用该全局变量。是不是有点…>_>
评论区
发表新的留言
您可以留言提出您的疑问或建议。
您的留言得到回复时,会通过您填写的邮箱提醒您。