[TOC]
# 指南
[JavaScript 開發者應懂的 33 個概念](https://github.com/stephentian/33-js-concepts)
[http://superherojs.com/](http://superherojs.com/)
[打造最好的面試圖譜](https://yuchengkai.cn/docs/frontend/)
# setTimeout 和 setInterval
[深入理解定時器系列第一篇——理解 setTimeout 和 setInterval ](https://www.cnblogs.com/xiaohuochai/p/5773183.html)
https://github.com/wwsun/awesome-javascript
https://msdn.microsoft.com/zh-cn/library/aa155110.aspx
# Unicode
[Unicode in JavaScript](https://flaviocopes.com/javascript-unicode/)
```js
[...'??'].length // 1 right way~!
'??'.length // 2
```
# **JS起源**
1: [JavaScript之父Brendan Eich](http://yannhe.com/javascript-Brendan-Eich)
2: [全面理解面向對象的JavaScript](http://www.ibm.com/developerworks/cn/web/1304_zengyz_jsoo/)
3: [JavaScript現在和將來都將是編程語言的首選](http://www.techug.com/javascript-is-your-frist-chose)
只要人們使用互聯網 JavaScript 就會留下來。
# **JSON**
JSON(JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數據不需要任何特殊的API或工具包。
JSON的規則很簡單:對象是一個無序的“‘名稱:值'對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值'對”之間使用“,”(逗號)分隔。
規則如下:
* 1)映射用冒號 `:` 表示。`key:value`
* 2)并列的數據之間用逗號 `,` 分隔。`key1:value1,key2:value2`
* 3)映射的集合(對象)用大括號 `{}` 表示。`{key1:value1,key2:value2}`
* 4)并列數據的集合(數組)用方括號 `[]` 表示。
```
[
{名稱1:值,名稱2:值2},
{名稱1:值,名稱2:值2}
]
```
* 5 )元素值可具有的類型:string, number, object, array, true, false, null
# **面向對象**:
## JavaScript: `__proto__`
http://www.cnblogs.com/ziyunfei/archive/2012/10/05/2710955.html

## 什么是屬性描述符
http://codethoughts.info/javascript/2015/06/16/javascript-property-descriptors/
可枚舉性(enumerable)用來控制所描述的屬性,是否將被包括在`for...in`循環之中。
具體來說,如果一個屬性的`enumerable`為`false`,下面三個操作不會取到該屬性。
* `for..in` 循環
* `Object.keys` 方法
* `JSON.stringify` 方法
3:[`__proto__` 屬性與 ES6 classes 的繼承](https://idiotwu.me/proto-property-and-es6-classes-inheritance/)
# **JS關鍵知識**
1:[按位操作符](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators)
2:[JavaScript 中加號操作符細節](http://codecloud.net/javascript-addition-operator-demystified-7753.html)
~~~
var result = [1,3,5] + 1; // "1,3,51"
如果兩個操作數是原始類型,那么操作符將會作檢查,如果至少一個操作數是字符串的話,將會把它們當字符串連接在一起。在其它情況之下,只會把操作數當作數字,并且做加法運算。
~~~
3:[javascript變量聲明提升(hoisting)](http://openwares.net/js/javascript_declaration_hoisting.html)
4:[Math.random()隨機數的二三事](http://www.soulteary.com/2014/07/05/js-math-random-trick.html)
`Math.random(); //0.0 ~ 1.0 之間的一個偽隨機數。【包含0不包含1】 //比如0.8647578968666494`
# **異步編程**
1: [談談JavaScript的異步實現](http://www.cnblogs.com/sprying/archive/2013/05/26/3100639.html)
2: [setTimeout的異步](http://www.cnblogs.com/littledu/articles/2607211.html)
3: [JavaScript的單線程性質以及定時器的工作原理](http://www.phpweblog.net/rainman/archive/2009/01/05/6267.html)
4: [Javascript 異步編程的4種方法](http://kb.cnblogs.com/page/167474/)
本文總結了"異步模式"編程的4種方法,理解它們可以讓你寫出結構更合理、性能更出色、維護更方便的Javascript程序。
5: [常見的異步編程模型](http://www.jb51.net/article/33342.htm)
6: [細說JavaScript單線程的一些事](http://www.codeceo.com/article/javascript-threaded.html)
7: [更快的異步執行](http://www.jb51.net/article/53626.htm)
8: [JavaScript 回調函數](http://codethoughts.info/javascript/2015/07/06/javascript-callbacks/)
# **內存**
1:[4類 JavaScript 內存泄露及如何避免](http://jinlong.github.io/2016/05/01/4-Types-of-Memory-Leaks-in-JavaScript-and-How-to-Get-Rid-Of-Them/?utm_source=tuicool&utm_medium=referral)
# 關于 `this`
> https://segmentfault.com/a/1190000008332496
[JavaScript’s ‘this’ Keyword](http://davidshariff.com/blog/javascript-this-keyword/)
https://stackoverflow.com/questions/22770299/meaning-of-this-in-node-js-modules-and-functions
# 關于閉包
[I never understood JavaScript closures](https://medium.com/dailyjs/i-never-understood-javascript-closures-9663703368e8)
[JavaScript: setTimeout under the hood (technical literacy)](https://medium.com/@svetabuben/javascript-settimeout-under-the-hood-technical-literacy-dc70edbc2698)
# 事件循環
[瀏覽器和NodeJS中不同的Event Loop](https://github.com/kaola-fed/blog/issues/234)
# 深入JS
https://mjavascript.com/
https://github.com/buildfirst/buildfirst#table-of-contents
[liangklfangl/react-article-bucket](https://github.com/liangklfangl/react-article-bucket)
# 公眾號文章
公眾號-[前端君 web前端教程](https://mp.weixin.qq.com/s?__biz=MzA3MDg1NzQyNA==&mid=2649654163&idx=1&sn=3c4868a0f2314a947b30730bcef5ac92&scene=21#wechat_redirect)
# Books
[Eloquent JavaScript: A Modern Introduction to Programming](http://amzn.to/1Rla120), by [Marijn Haverbeke]. This book, which is [also available for free online](http://eloquentjavascript.net/), is one of the most read and respected books on JavaScript development available.
[Learning JavaScript Design Patterns](http://amzn.to/1MlscTX), by [Addy Osmani](https://addyosmani.com/) is another excellent book, and is [also available for free online](https://addyosmani.com/resources/essentialjsdesignpatterns/book/).
# compile to JS
[List of languages that compile to JS](https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-js)
(Did you know you can compile almost every commonly used language to JavaScript? Incredible…
# Templating
[Mustache](https://mustache.github.io/)
[Handlebars](http://handlebarsjs.com/)
- 步入JavaScript的世界
- 二進制運算
- JavaScript 的版本是怎么回事?
- JavaScript和DOM的產生與發展
- DOM事件處理
- js的并行加載與順序執行
- 正則表達式
- 當遇上this時
- Javascript中apply、call、bind
- JavaScript的編譯過程與運行機制
- 執行上下文(Execution Context)
- javascript 作用域
- 分組中的函數表達式
- JS之constructor屬性
- Javascript 按位取反運算符 (~)
- EvenLoop 事件循環
- 異步編程
- JavaScript的九個思維導圖
- JavaScript奇淫技巧
- JavaScript:shim和polyfill
- ===值得關注的庫===
- ==文章==
- JavaScript框架
- Angular 1.x
- 啟動引導過程
- $scope作用域
- $q與promise
- ngRoute 和 ui-router
- 雙向數據綁定
- 規范和性能優化
- 自定義指令
- Angular 事件
- lodash
- Test