<input ng-model="name">
{{name}}
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 defined
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
\
/
Build you own rules, and update old ones.