哈喽大家好,我是归思君~一、引言我们知道,作用域(Scope)就是代码中变量和函数的可访问的区域,这个区域中决定了变量和函数的生命周期。在当前的高级程序语言中,主要有词法作用域(静态作用域)和动态作用域两种。静态作用域:其作用域是在编写代码时就已经确定好,静态作用域是根据变量和函数在代码中的位置来决定。函数寻找变量时,是在函数定义的位置中寻找,而不是调用的位置。现在大多数编程语言都采用的是静态作用域,比如 C, C++, Java, JavaScript, Python 等动态作用域:是在程序运行时根据程序的调用栈来动态确定,而不是在写代码时静态确定。在函数寻找变量时,根据函数调用的位置来寻找。这意味着同一个变量名在不同的调用上下文中可能指向不同的变量,可以用 Js 中的 this 值来进行理解,只有在调用时才知道 this 值的指向,动态作用域类型语言中的所有变量都是以这种形式来确定。动态作用域在现代编程语言中较少见,在某些早期语言中比如 Lisp其实这两种作用域的区别主要是作用域中的变量和函数,是在编译期还是运行期确定的,从词法分析角度讲,如果是通过静态词法分析而得出的时候,它就被称为词法作用域:JavaScript 中就采用的是词法作用域(静态作用域),下面就来详细看看:二、全局作用域和函数作用域从范围上分,JavaScript中的作用域有三种:全局作用域、函数作用域和块级作
...
继续阅读
(135)