原文: http://dmitrysoshnikov.com/ecmascript/javascript-the-core/
在ECMAScript中,函数是第一级(first-class)对象。这意味着函数可以做为参数传递给其他函数(在那种情况下,这些参数叫作「函数类型参数」)。接收「函数类型参数」的函数叫作高阶函数。同样函数也可以从其他函数中返回。返回其他函数的函数叫作以函数为值的函数。
原文: http://dmitrysoshnikov.com/ecmascript/javascript-the-core/
在ECMAScript中,函数是第一级(first-class)对象。这意味着函数可以做为参数传递给其他函数(在那种情况下,这些参数叫作「函数类型参数」)。接收「函数类型参数」的函数叫作高阶函数。同样函数也可以从其他函数中返回。返回其他函数的函数叫作以函数为值的函数。
原文: http://dmitrysoshnikov.com/ecmascript/javascript-the-core/
作用域(scope)控制着变量和参数的可见性及生命周期。
通常来说,一段程序代码中所用的变量并不是总是可用的,而限定这个变量的可用性的代码范围就是这个变量的作用域。
作用域链是一个对象列表,执行上下文中出现的变量标识符在这个列表中进行查找。执行上下文的建立阶段会建立作用域链。
原文: http://davidshariff.com/blog/what-is-the-execution-context-in-javascript/
执行上下文是 JavaScript 中最重要的概念之一。理解了执行上下文才会对变量提升,this 对象,函数作用域等概念有更深入的认识。在介绍执行上下文之前,我们先来看个变量提升的例子:
原文: http://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html
由于 js 代码中有可能包含输出文档内容、修改 dom 结构、重定向等行为,所以默认情况下 script 脚本会同步执行。但是,同步 js 脚本会阻塞浏览器对 dom 的解析,用户体验比较差。所以,我们应尽可能地采取异步方式调取 js 脚本。
script 的 onerror 事件 IE6~8 与 opera11 都不支持,但是,我们又经常遇到需要检测脚本是否出错的场景。下面给出一种可以兼容各种浏览器的解决方法:
函数链式调用是 jQuery 等框架中经常出现的一种函数调用方式,在面向对象编程中用得较多。JavaScript 的灵活性使得实现链式调用的方式多种多样,下面,我们简单地实现一下链式调用,以展示其原理。