这里是JavaScript核心的内容了. 挺多的JavaScript测试题也是围绕这个出的.
这里的一静一动指的是:
- 静, 词法作用域 - Lexical scoping
- 动, 动态绑定this的值
一、静
在JavaScript中函数有静态的词法作用域. 这是什么意思?
当我们写好了代码, 如 lexical.js , 那么此刻, 代码里的各个函数的作用域就已经确定了. 与这个函数是否被调用, 在哪儿调用, 被谁调用无关.
作用域大都被说成作用域链, 它是有层级关系的, 从顶层向底层直到全局作用域; 或者说从链头部向尾部延伸, 直到最后面的全局空间Global.
Global总在最后.
此作用域是函数的一个内部属性, 代码访问不到. 技术书籍中通常用 [[scope]] 这个名字来表示这个静态的词法作用域.
静 和 作用域 都说了, 那么这个词法是什么?
JavaScript解释器只需要分析源代码的文本就能确定[[scope]]. 嗯..我是这么理解的
例:
(1)
var scope = "global";
function foo() {
console.log(scope);
}
function bar() {
var scope = "local";
foo();
console.log(scope);
}
bar();
// global
// local
(2)
var scope = "global",
ns = {
scope: "In object",
bar: function() {
console.log(scope); // !this.scope
}
};
ns.bar();
//result global
(3)
var scope = "global",
bar = function() {
var scope = "In bar";
return function() {
// var scope = "In anony fn";
console.log(scope);
};
};
bar()();
======
稍微讲下, 这里形成了闭包, 比上面的例子稍复杂些, 但是判断词法作用域却非常简单! 为什么, 因为我们不用去考虑什么闭包什么调用逻辑,
我们只要分析代码文本就行了!
例子里一共出现2个函数, 3个scope变量(算上我注释掉的). 前提我们知道JavaScript中函数能产生新的作用域.
那么, 我们看一下return的这个匿名函数的词法作用域 [[scope]] 是什么?
分析代码文本, 首先有匿名函数自己, 往下是包着它的 bar 函数, 再往下发现没有函数了, 那就到Global了.
[[scope]] = Returned anonymous function -> bar function -> global
当我们确定了[[scope]], 当解析标识符scope的时候就是从这个链的顶端 anonymous function 向底部 Global 查找;
那么就上面的例子, bar()()调用时, 我们相当于在Global空间里调用了bar函数返回的匿名函数, 此函数打印 console.log(scope). 虽说是在Global里打印scope, 但是结果
是"In bar". 因为无论在哪调用, [[scope]]早已经确定! [[scope]] = Returned anonymous function -> bar function -> global
当打印scope的时候, 从Returned anonymous function开找, 发现没有 scope(被我注释掉了), 找下一个, bar function 发现目标, 打印之.
aaarticlea/png;base64,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" alt="" />
- 高性能Linux服务器构建实战笔记
一. web应用篇 1 HTTP服务器Nginx 1.1 性能上.功能上.安装上与Apache对比 l 性能上占用系统资源少,支持并发高 ...
- 《你必须知道的.NET》读书笔记:方法表初窥
一.窥探准备工作 public class Base { public void M() { Console.WriteLine("M in Base"); } public vi ...
- [Java解惑]类
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Activiti工作流学习-----基于5.19.0版本(4)
四.使用工作流开发 org.activiti.engine.ProcessEngine提供的Service作用在工作流引擎上面,如果所示是模仿一个公司简单的审批流程,你可以下载这个Demo:Activ ...
- 认识元数据和IL(下)<第五篇>
书接上回: 第二十四回:认识元数据和IL(上) , 第二十五回:认识元数据和IL(中) 我们继续. 终于到了,说说元数据和IL在JIT编译时的角色了,虽然两个回合的铺垫未免铺张,但是却丝毫不为过,因为 ...
- 转:Delphi中destroy, free, freeAndNil, release用法和区别
http://blog.sina.com.cn/s/blog_44fa172f0101cur1.html 1)destroy:虚方法 释放内存,在Tobject中声明为virtual,通常是在其子类中 ...
- c++的类型转换(转)
类型转换机制可以分为:隐式类型转换 和 显示类型转换(强制类型转换) C中的类型转换: 事情要从头说起,这个头就是C语言.我们已经习惯了使用C-like类型转换,因为它强大而且简单. 主要有以下两种形 ...
- 跟着vamei复习概率论
最近重新看了一下概率论,感觉很多东西都遗忘了,还会陷入各种误区,赶紧的纠正回来. 概率论这块,主要内容包括: 事件.条件概率.随机变量.随机变量的分布函数.概率密度.联合分布.期望.方差.协方差. 我 ...
- [你必须知道的.NET]第二十六回:认识元数据和IL(下)
发布日期:2009.03.04 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 说在,开篇之前 书接上回: 第二十四回:认识元数据和IL(上), ...
- GDB错误:Cannot find bounds of current function
http://blog.csdn.net/zoomdy/article/details/17249165 mingdu.zheng <at> gmail <dot> com 使 ...
- SpringMVC框架图解析
Spring框架提供了构造Web应用程序的全能MVC模块.Spring MVC分离了控制器.模型对象.分派器以及处理程序对象的角色,这种分离让它们更容易进行制定.是一个标准的MVC框架. 那你猜一猜哪 ...
- motan源码分析八:涉及到底层的客户端调用
之前我们分析了客户端调用服务端的源码,但是没有涉及到通讯层和序列化层,本文将之前讲过的内容做一次串联. 1.上层通过动态代理调用refer的call,每个refer又对应一个nettyclient,下 ...
- Mysql事务及行级锁的理解
在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...
- [Reduc] React Counter Example
Before you use the React Redux bindings, learn how to create a complete simple application with just ...
- Linux用户磁盘配额
一:内核中支持QUOTA: [root@localhost /]# grep CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA ...
- repeater 分页显示数据
表名:ChinaStates 控件:Repeater 查询代码DA: public class ChinaStatesDA { private DataClassesDataContext Conte ...
- jQuery幻灯插件:Nivo Slider
使用步骤 1.引入css文件 default.css 设置展示插件所需的样式,像控制导航键,导航按钮样式,当然你可以自己写个样式 nivo-slider控制图片样式,插件所需的CSS文件 <li ...
- CSS3 target 伪类不得不说那些事儿(纯CSS实现tab切换)
是不是觉得target有点眼熟?! 今天要讲的不是HTML的<a>标签里面有个target属性. target伪类是css3的新属性. 说到伪类,对css属性的人肯定都知道:hover.: ...
- uploadify在asp.net中的试用小结
花了差不多一下午的时间,总算把uploadify插件运行起来,在此对自己遇到的问题以及过程做一个小结. 一.使用步骤 1.在官网下载最新的插件包,并将包解压. 2.新建asp.net web项目,将解 ...