On Github khan4019 / HighPerfJS
<input ng-model="name">input with ng-model becomes angular directive Setup a keydown listener to input
{{name}}
						
							Something in angular named: $interpolation
							interpolation: markup with expression => string 
							interpolation setup a $watch in current scope
							$watch will be notified if "name" changes
						$compile vs $interpolate vs $parse
					var a = new Array(); //[] var b = new Array(3);//[undefined, undefined, undefined] var c = new Array(5, 6, 7);// [5, 6, 7]constructor is a function call plus execution, argument check
[]; //literals var d = [5, 6, 7];why [] faster, literal vs new
var a = [];
for (var i = 0; i < 10000; i++){
   a.push(i);
}
							
							
var b = [];
for (var i = 0; i < 10000; i++){
   b[i] = i;
}
							
							test: push vs assign
						var a = [1, 2]; a.push(3, 4, 5); a; // [1, 2, 3, 4, 5]
var b = [1, 2, 3, 4, 5, ...]; b.indexOf(669);
b.indexOf(669, 500);
b.lastIndexOf(169, 500);test: fromIndex
var devs = [{ name: 'addy osmani', age: 29}, {name: 'paul irish', age:31}, {name: 'js dude', age: 13}];
							
							
devs.filter(function (el, i, arr) {
    return el.age > 21;
});
							
							
function filterByForLoop(myArr, num){
    
    var i = 0, j = 0, len, output=[];
    
    for (i = 0, len = myArr.length; i < len; i ++) {
        if (myArr[i].age > 21) {
            output[j++]= myArr[i];
        }
     }
     return output;    
}
							filter vs simple loop							
						var a = 2;
function b(){
   console.log(a);
}							
							
function foo(){
   var d = 21;
   console.log(d);
}
foo(); //21
							
							console.log(d); //ReferenceError: d is not definedJS scope chain
var myArr = [0, 1, 2,3 4, 5 ...];
function useGlobal() {
    for (var j = 0; j < 10000; j++){
        console.log(myArr[j]);
    }
}
							
							
function useLocal() {
    var localArr = myArr;
    for (var k = 0; k < 10000; k++){
        console.log(localArr[k]);
    }
}
							
							local vs global variable
						
<ul id="listToDestroy">
    <li><a href="#">first item</a></li>
    <li><a href="#">second item</a></li>
    <li><a href="#">third item</a></li>
    <li><a href="#">forth item</a></li>
    <li><a href="#">Fifth item</a></li>
</ul>
							
							
var el = document.getElementById('listToDestroy');
el.addEventListener('click', function (e) {
    var list = e.target.parentNode;
    list.parentNode.removeChild(list);
    e.preventDefault();
});
							
							js perf delegate
						
$(document).ready(function () {
   console.log('document is ready. I can sleep now');            
});
							
document.addEventListener('DOMContentLoaded', function(){
   console.log('document is ready. I can sleep now'); 
});
							
							
document.onreadystatechange = function () {  
  if (document.readyState == "complete") {
    console.log('document is ready. I can sleep now');
  }
}
							
$('#myId');
$('.myClass');
$('div p');
									
							
document.querySelectorAll('#myId');
document.querySelectorAll('.myClass');
document.querySelectorAll('div p');
							
							
var nodes = document.querySelectorAll('.myClass');
//convert nodeList to array
var nodesArray = [].slice.call(nodes);
							
						
$(el).addClass('hide');
$(el).removeClass('hide');
$(el).toggleClass('hide');
$(el).hasClass('hide');
							
							
//IE9+
el.classList.add('hide');
el.classList.remove('hide');
el.classList.toggle('hide'); 
el.classList.contains('hide');
							
							MDN: classList
						$(el).hide(); $(el).show(); el.style.display = 'none'; el.style.display = '';
$(el).html(); $(el).html(setString); $(el).empty(); el.innerHTML; el.innerHTML = setString; el.innerHTML = '';
$(el).text(); el.textContent;you might not need jQuery
$(el).on(eventName, eventHandler);
$(el).on('click', function(e){
    console.log(e.target);	
});
							
							
//IE9+
el.addEventListener(eventName, eventHandler);
el.addEventListener('click', function(e){
    console.log(e.target);
});
							
							//remove event $(el).off(eventName, eventHandler); el.removeEventListener(eventName, eventHandler);
$(el).parent(); $(el).children(); $(el).next(); $(el).prev(); $(parent).append(el); $(el).remove();
el.parentNode; el.children; el.nextElementSibling; el.previousElementSibling parent.appendChild(el); el.parentNode.removeChild(el);
console.assert(myArray.length >5, "More than 5 elements");
 function foo(){
    console.count('fooed');
 }
 foo(); // fooed: 1
 foo(); // fooed: 2
 foo(); // fooed: 3 
 							
 							
console.time("Array initialize");
//your code
console.timeEnd("Array initialize");
							
							Using the console
							Console API
						\
/
Build you own rules, and update old ones.
Break All the Rules