摘要
文章地址: https://auth0.com/blog/glossary-of-modern-javascript-concepts/ https://auth0.com/blog/glossary-of-modern-javascript-concepts-part-2/
主要内容
scope
- global 全局域, 动态作用域是在运行时确定的。
- local 限定域,动态作用域是在运行时确定的。
var foo=1;
function static(){
alert(foo);
}
!function(){
var foo=2;
static(); // alert 2
}();
- lexical 词法作用域 = 静态作用域,词法作用域其实是指作用域在词法解析阶段既确定了,不会改变,唯一!!
var foo=1;
function static(){
alert(foo);
}
!function(){
var foo=2;
static(); // alert 1
}();
闭包
闭包的形成在于, 当一个在函数内声明的函数可以引用外部函数的局部变量. 就形成了闭包.
web-component
提供类似于 frame 的概念,隔离 css 样式,浏览器需要加载 polymer polyfills 才可正常运行,因为现代浏览器还不支持 web-component 标准
- smart-component 负责接收事件,逻辑处理
- dumb-component 负责页面元素以及事件发送
编译:
just in time (JIT) 编译 , 浏览器运行时编译
Ahead of time (AOT) 编译 , 预编译,浏览器可直接加载运行
打包:
Tree Shaking, 依赖于 ex2015 的 export import, rollup.js 采用这种方法编译
Hot and Cold Observables
Observables 和数组类似, 只不过数组是被保存在内存中, 而Observables的每一个元素则是异步加入进来. 我们可以订阅这些 observables.
Hot Observables 即使我们没有订阅它们. 比如说 用户的操作界面的 按钮点击事件, 鼠标移动, 窗口大小改变, 这些都是 Hot Observables.
cold observable则是需要我们去订阅, 并且会在我们订阅的时候开始执行.
参考: http://blog.csdn.net/xiongkai520520/article/details/52470328
高阶函数
函数作为 JavaScript 的一等公民, 可以跟普通数据类型一样, 被存储, 或者被作为值传参. 而高阶函数就是一种函数 可以接收另外一个函数作为入参, 或者返回一个函数作为结果.
Imperative and Declarative Programming(声明式和命令式编程)
声明式编程, 描述一段代码的逻辑怎么被显式调用去改变程序的状态. 命令式编程, 描述一段代码的逻辑, 而不需要描述如何完成这段逻辑.
JavaScript可以同时被写为 声明式和命令式编程方式, 但是随着函数式编程的兴起, 命令式编程将变得更加普遍.
参考: http://www.cnblogs.com/Chen-XiaoJun/p/6188242.html