On Github forthehackofit / javascript-zero-to-hero
var first = "Ady",
last = 'Ngom',
luckyNumber = 9,
ppg = 22.5,
isHandsome = true,
isNice,
_private = null,
hobbies = ["JS", "Basketball", "Baby talk"],
meetups = { "js" : "JS Zero to Hero", "html" : "HTML5 & CSS3"};
(typeof first); // "Ady" is a string (typeof last); // 'Ngom' is a string (typeof luckyNumber); // 9 is a number (typeof ppg); // 22.5 is also a number (typeof isHandsome); // true is a boolean (typeof _private); // null is an object (weird) (typeof isNice); // isNice has no value so it is undefined (typeof hobbies) // hobbies is an object (array are objects in JS) (typeof meetups) // an object with key : value pairs
var a = 1; var b = a; b = 5; console.log(a); // 1 console.log(b); // 5 var slogan = "Home of the braves"; var motto = slogan; console.log(motto); // Home of the braves motto = "Land of the free"; console.log(slogan) // Home of the braves console.log(motto) // Land of the free
var obj1 = { first : "John", last : "Doe", gender : "male" };
var obj2 = obj1;
obj2.first = "Jane";
obj2.gender = "female";
console.log(obj1); // { first : "Jane", last : "Doe", gender : "female" }
var fruits = ["banana", "orange", "apple"];
var favorites = fruits;
console.log(favorites); // ["banana", "orange", "apple"]
favorites[3] = "tomato"; // yes tomato is a fruit :)
console.log(fruits); ["banana", "orange", "apple", "tomato"]
// a fruit was added and is updated everywhere
35 / "5"; // 7
"35" / "5"; // 7
"35" + "5"; // 355
"35" + 5; // 355
35 + "5"; // 355
35 + 5; // 40
(+"35") + (+"5"); // 40
(+"35abc") + (+"5"); // NaN
parseInt("35abc") + 5; // 40
var a = 100, // global scope
b = a; // global scope
console.log(a); // 100
b += 10; // we add 10 to b using the unary operator
console.log(b); // 110
function addAB() {
var b = 5; // local scope
// by preceding b with the var keyword
// it became a local variable to the function addAB()
// a in the outside scope is accessible by the function
// so is equal 100
return (a + b); // 105
}
var sum = addAB(); // the value of sum will always be 105
console.log(sum);
var a = 100, b = a;
function addAB() {
var b = 5; // b local scope
function addIt() {
var a = 95; // a local scope to addIt
if (a > 90 ) {
var b = 20;
// if this condition checks b has changed again
// but conditional blocks do not hold a scope
}
// so the new b is still accessible inside the addIt function
return (a + b);
}
return addIt(); // 115
}
var sum = addAB(); // sum will be 115
console.log(sum);
var A = "5",
B = 5;
/**
* Be careful what operator you want to use to compare values
* the double equal (==) compares values only
* but does not compare types so "5" == 5 is true
* even though the first one is a string and the second a number
*/
if (A == B) {
console.log("A is a "+typeof A +" B is a "+typeof B);
}
else {
console.log("A and B are not equal")
}
/**
* Here we are using the triple equal (===)
* that essentially says to compare the equality
* of the values and their types so in this case
* "5" === 5 will be false since the two types differ
*/
var A = "5",
B = 5;
if (A === B) {
console.log("A is a "+typeof A +" B is a "+typeof B);
}
else {
console.log("A and B are not equal")
}