https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy
https://dorey.github.io/JavaScript-Equality-Table/
if tab 就是在比對真值和假值
&& (and)
|| (or)
! (not)
若第一個不是真值,就回傳第一個
若第一個是真值,就回傳第二個
ex: 0 && 1 // 0
1 && 2 // 1
若第一個不是真值,就回傳第二個
若第一個是真值,就回傳第一個
顛倒否定的概念
!0 // true
!1 // false
使用三元運算子
var originCash = 500;
function updateEasyCard(cash) {
cash = parseInt(cash);
console.log(cash);
// 當 cash 是數值或為 0 時,使用 cash 的數值
// 如果 cash 是 NaN 時,則直接套用 500
cash = (cash || cash === 0)? cash: 500;
var money = cash + originCash;
console.log('我有 ' + money + ' 元');
}
updateEasyCard(0);
// ex 1
/*var a = 1; // number
var b = new Number(1); // 建構式,object {1}
console.log(a == b); // 非物件比對物件 number == object
// 1 == {1} Number({1}) 轉成 1 所以答案是true
console.log(a === b); // false
*/
// ex2
/*var a = 1;
var b = 0;
console.log(1 || 0); // 因為||第一個是真值,回傳第一個 所以答案是1
*/
// ex3
/*var a = 1;
var b = 2;
var c = 0;
console.log(a && b && c); // 0
// &&的順序為由左到右,然後不是整個比對,因為是表達式,所以成雙成對
// 1 && 2 // 2
// 2 && 0 // 0
console.log(c || c && c || a); // 1
// 要先看|| && 優先序,&&優先度高於||
// c && c // 0
// c || 0 || a
// 0 || 0 // 0
// 0 || 1 // 1
console.log(a && b || c && a); // 2
// 1 && 2 // 2 0 && 1 // 0
// 2 || 0 // 2
*/
// ex4
/*var a = 1 + 1 === 1;
console.log(a); // false
// a = 2 === 1 優先序=最低
// 2 === 1 false
*/
// ex5
/*console.log(1000 < 10000 < 10); // true
// 1000 < 10000 // true
// true < 10 true轉型Number(true) // 1
// 1 < 10 true
*/
// ex6
var a = '1';
var b = 2;
var c = (a > b) ? a * b : sum(a, b);
function sum(a, b) {
return a + b;
}
console.log(c); // 12
// '1' > 2 字串會轉型Number('1') // 1
// sum => '1' + 2 轉型變成string 12
口訣:
++ a 先加在賦於結果
a ++ 先把a賦於結果,後面在加1
https://stackoverflow.com/questions/6378646/whats-the-difference-between-i-and-i-in-javascript