写在开始
上篇文章介绍的是系统环境的配置,在这一篇中将会介绍代码编辑器 Sublime Text 3 的简单配置和实用插件。
Sublime Text 是一款跨平台代码编辑器(Not IDE),拥有非常丰富成熟的插件,辅以大量的快捷键,足使开发效率成倍提升。
另外,GitHub 在去年开源了一款叫 Atom 的代码编辑器,基本和 Sublime Text 无异。不过是基于 Node.js 和 Chromium,这个会在下一篇进行介绍。Atom 也是我目前的主力编辑器。
工欲善其事,必先利其器。
目前可供开发人员使用的工具越来越多,合理的使用工具有助于提升开发效率,但种类繁多时选择起来却会让人感觉眼花缭乱。所以我准备在接下来的几篇文章中分享一些我的 Mac 开发环境配置,供大家参考。
使用Grunt已经有很长一段时间了,不得不感叹其社区的壮大,各种插件层出不穷。而在这期间我也换过几种方式来组织Gruntfile.js
,但都不是很理想,直到前段时间看到load-grunt-tasks这个插件以及More maintainable Gruntfiles这篇文章后,我就把项目中的Gruntfile.js
都按照该文章作者所述的方式重新组织了一遍。
我就暂且把这种方式用自己的文字记录一下并分享给正在使用Grunt
的同学们吧,不过本文也不算是对《More maintainable Gruntfiles》的翻译呐,毕竟我E文太差~
闭包是JavaScript中的重要特性之一,大多数用过JavaScript的程序员也基本上都接触过闭包,不管是否知道或了解闭包这个概念。比如在用jQuery的时候:
1 | var count = 0; |
闭包,维基百科的解释是:指引用了自由变量的函数。而我个人认为前端大牛johnhax的解释更加容易理解:闭包就是内部函数能访问外部的变量。
所以,要理解闭包,只要理清楚变量作用域这个概念就差不多了。我也把对变量作用域的一些个人理解记录在了前两篇文章中,故这里就只简单说说一个函数它可以访问哪些作用域中的变量:
而对于第三点,就是闭包的行为了,用一个简单的例子来说明。
接上篇,已经大致明确了以下几点:
var
关键字声明的变量会成为全局变量接下来根据上篇留下的最后一段代码,继续谈谈变量作用域。
1 | var name = 'global'; |
这段代码最终会在控制台打印出'global'
,而并非'foo'
。可以看出,函数运行时能访问到的作用域是它被定义时的作用域,不是被调用时的作用域。
每当谈及JavaScript作用域的时候,基本上都会提到“词法作用域”、“执行环境”、“活动对象”、“作用域链”这几个概念,而了解这些概念将有助于理解JavaScript中的闭包。我也谈谈我对此的理解,如误欢迎指正,不胜感激。