Anonymous functions are functions that are dynamically declared at runtime. They’re called anonymous functions because they aren’t given a name in the same way as normal functions.
Functions as First-class Objects
Scoping and Hoisting
Hoisting: On runtime, all var and function declarations are moved to the beginning of each function (its scope) - this is known as Hoisting. Having said so, it is a good practice to declare all the vars altogether on the first line, in order to avoid false expectations with a var that got declared late but happened to hold a value before - this is a common problem for programmers coming from languages with block scope.
Closures are functions that refer to independent (free) variables. In other words, the function defined in the closure 'remembers' the environment in which it was created in. It is an important concept to understand as it can be useful during development, like emulating private methods. It can also help to learn how to avoid common mistakes, like creating closures in loops.
Source: MDN - Closures
Source: MDN - Strict mode
Immediately-Invoked Function Expression (IIFE)
This pattern has been referred to as a self-executing anonymous function, but @cowboy (Ben Alman) introduced the term IIFE as a more semantically accurate term for the pattern.
Creational Design Patterns
Structural Design Patterns
Behavioral Design Patterns
Maintained by TJ Holowaychuk
Maintained by jQuery
Maintained by Pivotal Labs
Maintained by the team behind AngularJS. Mostly by Vojta Jina
Maintained by Sitepen
A test helper to mock functions and the XHR object, maintained by Leo Balter
Test runner with asynchronous tests, maintained by Sindre Sorhus
Built by @wycats, jQuery and Ruby on Rails core developer.
Built by Google, Angular.js is like a polyfill for the future of HTML.
One framework.Mobile & desktop. One way to build applications with Angular and reuse your code and abilities to build apps for any deployment target. For web, mobile web, native mobile and native desktop.
Cappuccino is an open-source framework that makes it easy to build desktop-caliber applications that run in a web browser.
Meteor is an open-source platform for building top-quality web apps in a fraction of the time, whether you're an expert developer or just getting started.
Riot is an incredibly fast, powerful yet tiny client side (MV*) library for building large scale web applications. Despite the small size all the building blocks are there: a template engine, router, event library and a strict MVP pattern to keep things organized.
Is an MVVM library providing two-way data binding, HTML extended behaviour (through directives) and reactive components. By using native add-ons a developer can also have routing, AJAX, a Flux-like state management, form validation and more. Provides a helpful Chrome extension to inspect components built with Vue.
Handlebars provides the power necessary to let you build semantic templates effectively with no frustration.
Asynchronous templates for the browser and node.js.
GSAP is the fastest full-featured scripted animation tool on the planet. It's even faster than CSS3 animations and transitions in many cases.
Velocity is an animation engine with the same API as jQuery's $.animate().
Bounce.js is a tool and JS library that lets you create beautiful CSS3 powered animations.
SVG is an excellent way to create interactive, resolution-independent vector graphics that will look great on any size screen.
Make use of your favicon with badges, images or videos.
Textillate.js combines some awesome libraries to provide a ease-to-use plugin for applying CSS3 animations to any text.
With Anima it's easy to animate over a hundred objects at a time. Each item can have it's mass and viscosity to emulate reallife objects!
MelonJS is a free, light-weight HTML5 game engine. The engine integrates the tiled map format making level design easier.
ImpactJS is one of the more tested-and-true HTML5 game engines with the initial release all the way back at the end of 2010. It is very well maintained and updated, and has a good-sized community backing it. There exists plenty of documentation - even two books on the subject of creating games with the engine.
LimeJS is a HTML5 game framework for building fast, native-experience games for all modern touchscreens and desktop browsers.
Cocos2d-html5 is an open-source web 2D game framework, released under MIT License. It is a HTML5 version of Cocos2d-x project. The focus for Cocos2d-html5 development is around making Cocos2d cross platforms between browsers and native application.
Kiwi.js is a fun and friendly Open Source HTML5 Game Engine. Some people call it the WordPress of HTML5 game engines
Panda.js is a HTML5 game engine for mobile and desktop with Canvas and WebGL rendering.
Isogenic is an advanced game engine that provides the most advanced networking and realtime multiplayer functionality available in any HTML 5 game engine. The system is based on entity streaming and includes powerful simulation options and client-side entity interpolation from delta updates.
Super-fast 3D framework for Web Applications & Games. Based on Three.js. Includes integrated physics support and ReactJS integration.
by Yehuda Katz
by Scott Allen
by Ben Alman
by Viljami S.
by Ju Gonçalves
by James Coglan
by Dustin Diaz
by Addy Osmani
by John Resig
by Kyle Simpson
by Ryan Burgess
by Ivo Wetzel
by David Herman
ORIGINAL SOURCE: http://jstherightway.org
- DOM vs Virtual DOM (Vue's challenge)
- CSS Shapes: how to create non-rectangular shapes (part 2)
- CSS Shapes: how to create non-rectangular shapes (part 1)
- How to Become a Full Stack Developer in 2018
- The CSS Grid Explained in 7 Minutes (with diagrams and code)
- Fetch API, an amazing replacement of XMLHttpRequest AJAX