深入作用域之静态作用域与动态作用域
2016-02-22 11:21
190 查看
概念:
静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域(变量)。
动态作用域在代码执行的时候才确定它的作用域的,以及作用域链。
静态作用域:
在创建函数fn的时候就已经确定了它可以作用那些变量,如果函数fn里面有变量a就直接作用函数fn里面的变量a,如果没有就往上一级找,这就是静态作用域。
动态作用域:
你肯定会疑问你上面不是说,函数fn在创建的时候就已经确定了它的作用域吗?为什么现在又不是了?其实一开始它确实已经确定了它的作用域,但是又因为你在调用这个fn的时候写了参数,这个函数fn的作用域又发生了改变,变成了动态的作用域,于是它作用了在函数体内的变量a。
静态作用域指的是一段代码,在它执行之前就已经确定了它的作用域,简单来说就是在执行之前就确定了它可以应用哪些地方的作用域(变量)。
动态作用域在代码执行的时候才确定它的作用域的,以及作用域链。
静态作用域:
var a = 10; function fn(){ var b = 1; console.log(a+b); } fn(); //11
在创建函数fn的时候就已经确定了它可以作用那些变量,如果函数fn里面有变量a就直接作用函数fn里面的变量a,如果没有就往上一级找,这就是静态作用域。
动态作用域:
var a = 10; function fn(a){ var b = 1; console.log(a+b); } fn(1); //2
你肯定会疑问你上面不是说,函数fn在创建的时候就已经确定了它的作用域吗?为什么现在又不是了?其实一开始它确实已经确定了它的作用域,但是又因为你在调用这个fn的时候写了参数,这个函数fn的作用域又发生了改变,变成了动态的作用域,于是它作用了在函数体内的变量a。
相关文章推荐
- Linux配置NTP服务器,时间同步
- control confounding in study
- 基于Spring框架的Shiro配置
- 视频跟踪学习——TLD
- Activity启动模式详解
- win2008服务器,fastCGI完美设置教程
- asp.net开发与web标准的冲突问题
- HTML基础(JavaScript)
- Service精通
- Arduino: L293D for a DC motor
- 双屏显示技巧
- IIS7中配置FastCGI运行PHP
- 第一个博客~!
- 全表更新
- 不务正业--用python爬虫抓取Konachan的图片并保存到本地文件
- 关于STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的复位
- leetcode刷题系列C++-rotate image
- 用word发CSDN blog,免去插图片的烦恼
- FJWC2016 day1 t1
- SQL 实现行列互换