"Whenever there is a divergence between what your brain thinks and what is actually happening in the computer, that's where bugs enter the code."
(Kyle Simpsons)
typeof true; // "boolean"
typeof 42; // "number"
typeof 'kiskutya'; // "string"
typeof null; // "null"
typeof undefined; // "undefined"
myName = "Kyle";
myName.nickname = "getify";
console.log(myName.nickname) // undefined'use strict'
myName = "Attila";
myName.nickname = "Csati";
console.log(myName.nickname)
// TypeError: Cannot create property 'nickname'
// on string 'Attila'function joinTexts(...args) {
return args.filter((arg) => arg != null).join(' ');
}who = myName ?? "User";record = {
shippingAddress: {
street: "123 JS Lane",
city: "Browserville",
state: "XY"
}
};
console.log( record?.shippingAddress?.street );
console.log( record?.billingAddress?.street );
(Please don't use it like this)
someFunc?.(42);aka (! postfix)
function greet(msg = "Hello") {
console.log(msg);
}
greet();
greet(undefined);
greet("Hi");
greet(null);undefined - undeclared - uninitialized
// isLoggedIn = 1;
isLoggedIn = true;
isComplete = 0;
// isComplete = false;
// how to use it:
if (isLoggedIn) {
// do something
}
while (!isComplete) {
// keep going
}
console.log(isLoggedIn === true)
console.log(isComplete == false)Number.isInteger(42);
Number.isInteger(42.0);
Number.isInteger(42.000000);
Number.isInteger(42.0000001);Number.isInteger(num);
parseInt(someNumericText,10)
parseFloat(someNumericText)
someNumericText = "123.456";
parseInt(someNumericText,10); // 123
parseFloat(someNumericText); // 123.456
parseInt("42",10) === parseFloat("42"); // true
parseInt("512px"); // 512Number(num)
someNumericText = "123.456";
Number(someNumericText); // 123.456
+someNumericText; // 123.456
Number("512px"); // NaN
+"512px"; // NaNlet num1 = "10";
let num2 = 5;
let result = num1 + num2;typeof NaNNaN === NaN;
politicianIQ = "nothing" / Infinity;
Number.isNaN(politicianIQ); // true
Object.is(NaN,politicianIQ); // true
[ NaN ].includes(politicianIQ); // trueways to check if the value is NaN