怎么理解作用域~不太懂啊
简单点讲作用域就是一个变量能被访问到的代码范围,
块级作用域就是如c语言中那些花括号中的定义的变量是无法在其外访问到的,而js中那些变量属于全局变量。
es5只支持函数作用域,可以使用闭包来模拟,es6中可以用let构造块级作用域。
推荐javascript忍者秘籍,多看看书多写写吧。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。在JavaScript中,变量的作用域有全局作用域和局部作用域两种。
全局作用域(Global Scope)在代码中任何地方都能访问到的对象拥有全局作用域,一般来说以下几种情形拥有全局作用域`:
(1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:
(2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如:
变量blogName拥有全局作用域,而authorName在函数外部无法访问到。
(3)所有window对象的属性拥有全局作用域
一般情况下,window对象的内置属性都拥有全局作用域,例如window.name、window.location、window.top等等。
1. 局部作用域(Local Scope)
和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。