http://taobaofed.org/blog/2015/10/28/try-catch-runing-problem/
https://stackoverflow.com/questions/9267289/what-does-function-in-javascript-mean
https://about.twitter.com/zh-hans/resources/buttons#follow
// shorthand/ 替代, 自我调用匿名函数:
!function(){
// code
}();
//===
(function(){
// code
})();
(function(){
// code
}());
https://www.ecma-international.org/publications/standards/Ecma-262.htm
https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/
https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/
let x_style = `
color: #0f0;
background: rgba(0,0,0,0.5);
font-size: 2rem;
border: 1px solid red;
border-radius: 7px;
`;
let message = `IIFE`;
(function(){
console.log(`%c message \n`, `${x_style}`, `${message} outer`);
})();
(function(){
console.log(`%c message \n`, `${x_style}`, `${message} inner`);
}());
!function(){
console.log(`%c message \n`, `${x_style}`, `${message} !`);
}();
You can also use + instead of !.
+function(){
console.log(`%c message \n`, `${x_style}`, `${message} +`);
}();
-function(){
console.log(`%c message \n`, `${x_style}`, `${message} -`);
}();
https://www.w3schools.com/js/js_function_definition.asp
https://www.w3schools.com/js/js_operators.asp
Operator Description && logical and || logical or ! logical not
https://www.w3schools.com/js/js_comparisons.asp
https://www.w3schools.com/js/js_operators.asp
try catch
http://taobaofed.org/blog/2015/10/28/try-catch-runing-problem/
https://bugs.chromium.org/p/v8/issues/detail?id=1065
http://yanhaijing.com/es5/#null
es6 decorators
http://taobaofed.org/blog/2017/04/27/building-consistent-api-with-es-decorators/
https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841
http://taobaofed.org/blog/2017/03/16/javascript-functional-programing/
闭包, 匿名函数-闭包