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
Element.matches()
https://developer.mozilla.org/zh-CN/docs/Web/API/Element/matches
https://davidwalsh.name/datalist
https://www.sitepoint.com/javascript-event-delegation-is-easier-than-you-think/
Array.prototype.indexOf()
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf