javascript κΈ°μ΄ νμ΅
githubμ TIL ν΄λ λ§λ€κΈ°
TIL / javascript μμ νμ΅ λ
ΈνΈ commit & push
λλ¦Όμ½λ© μ νλΈ 'μλ°μ€ν¬λ¦½νΈ κΈ°μ΄ κ°μ' (4νΈ)
μ¬μ νμ΅ κ°μ΄λ step 2 (logical operators ~ loops)
- falseλ‘ λ³νλλ κ° :
0 ο½ -0 ο½ false ο½ undefined ο½ null ο½ NaN ο½ "" ο½ '' ο½ ``
- trueλ‘ λ³νλλ κ° : κ·Έ μΈμ κ° λͺ¨λ
||
(or)shift + \
λ₯Ό 2λ² λλ₯΄λ©΄ ||
μ΄ μ
λ ₯λλ€.
value(κ° κ·Έ μ체)
, expression(ννμ)
, function(ν¨μ)
λ± νΌμ°μ°μλ€ μ€ νλλΌλ
trueλ‘ λ³νλλ κ°μ΄ μμΌλ©΄ console μ°½μ κ·Έ νΌμ°μ°μ κ°
λ₯Ό λ°ννλ€. λ°λμ boolean κ°(true/false)μ λ°ννλ κ²μ μλλ€.
μΌμͺ½λΆν° truthy κ°μ μ°Ύκ³ , μ°Ύμ κ²½μ° κ·Έ μ¦μ μ°μ°μ μ€μ§νκ³ λ°λ‘ ν΄λΉ νΌμ°μ°μ κ°μ 보μ¬μ€λ€. λ§μ§λ§κΉμ§ μ°Ύμ§ λͺ»ν κ²½μ°μλ(λͺ¨λ falsyμΈ κ²½μ°μλ) λ§μ§λ§μ μμΉν νΌμ°μ°μ κ°
λ₯Ό λ°ννλ€.
console.log(true || false); // true β μ΄λ trueλ boolean κ°μ΄λ€ console.log(`or: ${true || false}`); // or: true β μ΄λ trueλ stringμ΄λ€ console.log(`or: ${"hello" || []}`); // or: hello console.log(`or: ${[] || "hello"}`); // or: β []λ falsyκ° μλλ―λ‘ helloκ° μλλΌ μ²μμ 곡백μ 보μ¬μ€ console.log(`or: ${(function foo () {}) || "hello"}`); // or: function foo () {} β 첫 λ²μ§Έ truthyλ₯Ό μ°ΎμΌλ©΄ κ·Έ λ€μμ λ³΄μ§ μκ³ ν΄λΉ νΌμ°μ°μλ₯Ό λ°νν¨ console.log(`or: ${false || false}`); // or: flase β λ§μ§λ§κΉμ§ κ°μ μ°Ύμ§ λͺ»ν κ²½μ° λ§μ§λ§μ μμΉν κ°μ λ°ν console.log(`or: ${false || ""}`); // or: β λ§μ°¬κ°μ§λ‘ λ λ€ falsyμ΄λ―λ‘ λ§μ§λ§μ 곡백μ 보μ¬μ€
value(κ° κ·Έ μ체)
, expression(ννμ)
, function(ν¨μ)
μμλ‘ μ μ΄μΌ νλ€.ex.
const value1 = true; const value2 = 4 < 2; console.log(`or: ${value1 || value2 || check()}`); function check() { for (let i = 0; i < 10; i++) { // waiting time console.log('γ γ ') } return true; } // or: true
μ£Όμ β
console μ°½μ λ°νλλ κ°μvalue1
μ΄ μλλΌtrue
μ΄λ€.
ννΈ,
expression(ννμ)
- 리ν°λ΄, μλ³μ, μ°μ°μ, ν¨μ νΈμΆ λ±μ μ‘°ν© - κ°μ λ§λ€μ΄λ΄λ μ½λ λ¨μ - 무μμ΄λ νλμ κ°μ λ°ννλ€
statement(λ¬Έ)
- 무μμΈκ°λ₯Ό μννλ μ½λ λ¨μ - κ°μ λ§λ€μ΄λ΄μ§ λͺ»νλ€
&&
(and μ°μ°μ)value(κ° κ·Έ μ체)
, expression(ννμ)
, function(ν¨μ)
λ± νΌμ°μ°μλ€ μ λΆκ°
trueλ‘ λ³νλλ κ°μ΄λΌλ©΄ console μ°½μ κ·Έ μ€ λ§μ§λ§ νΌμ°μ°μ κ°
λ₯Ό λ°ννλ€. λ°λμ boolean κ°(true/false)μ λ°ννλ κ²μ μλλ€.
μΌμͺ½λΆν° falthy κ°μ μ°Ύκ³ , μ°Ύμ κ²½μ° κ·Έ μ¦μ μ°μ°μ μ€μ§νκ³ λ°λ‘ ν΄λΉ νΌμ°μ°μ κ°μ 보μ¬μ€λ€. λ§μ§λ§κΉμ§ μ°Ύμ§ λͺ»ν κ²½μ°μλ(λͺ¨λ truthyμΈ κ²½μ°μλ) λ§μ§λ§μ μμΉν νΌμ°μ°μ κ°
μ λ°ννλ€.
console.log(`${"" && "hello"}`); // 곡백 β 첫λ²μ§Έ falsy κ°μ 보μ¬μ€ console.log(`${(function foo () {}) && {}}`); // [object Object] β λλ€ truthyμ΄λ―λ‘ λ§μ§λ§ truthy κ°μ 보μ¬μ€ console.log(`${false && ""}`); // false β 첫λ²μ§Έ falsy κ°μ 보μ¬μ€
null 체ν¬
μλ λ§μ΄ μ°μΈλ€.nullableObject && nullableObject.somthing
μμ νΌμ°μ°μκ° nullμΈ κ²½μ° μ΄λ―Έ falseμ΄λ―λ‘ λ€μ νΌμ°μ°μλ μμ μ€νλμ§ μλλ€. μμ νΌμ°μ°μκ° nullμ΄ μλ λλ§ somethingμ΄λΌλ κ°μ λ°μμ¨λ€.
μ΄λ₯Ό μ½λλ‘ νννλ©΄, (λμ€μ λ°°μΈ κ²!)
if (nullableObject != null) { nullableObject.something; }
!
(not μ°μ°μ)console.log(`${!"abc"}`); // false console.log(`${!""}`); // true console.log(!`${Boolean(' '.trim())}`); /* true β μλλ 곡백 λ¬Έμμ΄μ΄λΌ trueμΈλ° trim() ν¨μλ‘ λ¬Έμμ΄ μμͺ½ 곡백μ μ κ±°ν΄μ falseκ° λλ€κ° μ¬κΈ°μ not μ°μ°μκ° λΆμ΄μ λ€μ trueκ° λ¨ */
==
(loose equality)λλ± λΉκ΅, κ°μ΄ κ°λ€
!=
: κ°μ΄ κ°μ§ μλ€
===
(strict equality)μΌμΉ λΉκ΅, κ°κ³Ό νμ
μ΄ λͺ¨λ κ°λ€
!==
: κ°μ΄λ νμ
μ΄ κ°μ§ μλ€.
const syong1 = {name: 'syong'}; const syong2 = {name: 'syong'}; const syong3 = syong1 console.log(syong1 == syong2); // false β λ©λͺ¨λ¦¬μ μ μ₯λλ referenceκ° μλ‘ λ€λ₯΄λ€ console.log(syong1 === syong2); // false β νμ μ΄ λκ°λ μλλ κ°μ λ©λͺ¨λ¦¬μ μ μ₯λλ referenceλΆν° μλ‘ λ€λ₯΄λ€ console.log(syong1 === syong3); // true β λ©λͺ¨λ¦¬μ μ μ₯λλ referenceκ° μλ‘ κ°λ€
if (/* 쑰건(μ°Έ κ±°μ§μΌλ‘ νκ°λλ expression) */) {
// μ€νλ¬Έ(statement)
}
μ€μ²© κ°λ₯
κ·Έλ¬λ μ¬λ¬ κ°μ else if μ€ 'λ¨ ν κ°μ§'μ μ‘°κ±΄λΆ μ½λλ§ μ€νλλ€.
(β΅ else = μλλ©΄~)
μ€ν μμ
if statement
κ° trueλ©΄, {}μμ λ΄μ©μ μ€ννλ€.
if statement
κ° falseλ©΄, κ·Έ λ€μ else if
λ‘ λμ΄κ°λ€.
else if statement
κ° trueλ©΄, {} μμ λ΄μ©μ μ€ννλ€.
else if statement
κ° falseλ©΄, else
λ‘ λμ΄κ°μ {} μμ λ΄μ©μ μ€ννλ€.
const name = 'sysysy'; if (name === 'sy') { console.log('hello'); } else if (name === 'sysy') { console.log('bye'); } else { console.log('unknown'); } // unknown
κ°λ¨ν κ²½μ°μλ§ μ¬μ©
볡μ‘ν κ²½μ°μλ ifλ switchλ₯Ό μ¬μ©ν κ²
const name = 'sysysy'; console.log(name === 'sy' ? 'yes' : 'no'); // no
?
nameμ΄ sy λ§μΌλ©΄ yes μΆλ ₯
:
nameμ΄ sy μλλ©΄ no μΆλ ₯
caseλ¬Έ λ€μλ μμ κ°λ§ μ¬ μ μλ€
typescriptμμ μ ν΄μ Έ μλ νμ μ κ²μ¬ν λ μ¬μ©
const browser = 'chrome'; switch (browser) { case 'IE': console.log('IE'); break; // λ» : νμ¬ μ‘°κ±΄λ¬Έμ μ’ λ£νκ² λ€ case 'firefox': case 'chrome': console.log('firefox or chrome'); break; case 'mozilla': console.log('mozilla'); break; } // firefox or chrome
ν΄μ
: browserμ κ°μ΄ IEμ΄λ©΄ console μ°½μ IEλ₯Ό 보μ¬μ£Όκ³ νμ¬ μ‘°κ±΄λ¬Έμ μ’ λ£νκ³ , browserμ κ°μ΄ firefox νΉμ chromeμ΄λ©΄ console μ°½μ firefox or chromeμ 보μ¬μ£Όκ³ νμ¬ μ‘°κ±΄λ¬Έμ μ’ λ£νκ³ ...
while 쑰건μμ΄ falseκ° λκΈ° μ κΉμ§ 무νλλ‘ λ°λ³΅ν΄μ μ€ννλ€
μ‘°κ±΄μ΄ trueμ¬μΌλ§ λΈλ‘μ μ€ννλ€
let j = 3; while (j > 0) { console.log(`while: ${j}`); j--; }
μΌλ¨ λΈλ‘μ λ¨Όμ μ€ννμ¬ μΆλ ₯μ ν ν λΈλ‘ λ°κΉ₯μ while 쑰건μμ΄ μ°ΈμΈμ§ κ±°μ§μΈμ§ κ²μ¬ν΄μ falseκ° λλ©΄ λ©μΆλλ‘ νλ€
λΈλ‘μ λ¨Όμ μ€ννκ³ , μ‘°κ±΄μ΄ trueμΈμ§ κ²μ¬νλ€
μμ while λ°λ³΅λ¬Έ μμ μ μ΄μ΄μ§
do { console.log(`do while: ${j}`); i--; } while (j > 0)
for (β μμ; ①쑰건; β£ λ¨κ³) {
β’ μ€νλ¬Έ;
}
ex.
for (var i = 1; i < 11; i += 2) { if (i === 7) { break; // μ 체 λ°λ³΅λ¬Έ μ’ λ£ } console.log(i); } /* 1 3 5 */ for (var i = 1; i < 11; i += 2) { if (i === 7) { continue; // κ·Έ λ°λ³΅λ¬Έλ§ μ’ λ£ } console.log(i); } /* 1 3 5 9 */
κ³Όμ
var naming = "ken"; // κ³Όμ 1) μμμΌλ‘ ν κΈμμ© μΆλ ₯νλ λ°λ³΅λ¬Έ μμ±ν΄λ³΄μΈμ. for (var i = 2; i > -1; i -= 1) { console.log(naming[i]); } var longText = "0i1a2m3k4e5n"; // κ³Όμ 2) νμ λ²μ§Έ κΈμλ§ μΆλ ₯νλ μ½λλ₯Ό μμ±ν΄λ³΄μΈμ. for (var i = 0; i < 12; i += 2) { console.log(longText[i]); }
whileκ³Ό for λ°λ³΅λ¬Έ λͺ¨λ μ€μ²©μ΄ κ°λ₯νμ§λ§, λλλ‘μ΄λ©΄ νμ§ μλλ‘ νλ€.
break;
VS continue;
break;
β κ±°κΈ°μλΆν° μ 체 λ°λ³΅λ¬Έ μ’
λ£
continue;
β ν΄λΉ λ°λ³΅λ¬Έλ§ μ’
λ£
κ³Όμ 1) 0λΆν° 10κΉμ§ λ°λ³΅νλ μ§μλ§ μΆλ ₯ν΄λΌ (continue μ΄μ©)
for (a = 0; a < 11; a++) { if (a % 2 !== 0) { continue; } console.log(a); }
κ³Όμ 2) 0λΆν° 10κΉμ§ λ°λ³΅νλ 8κΉμ§ μ«μλ₯Ό μΆλ ₯ν΄λΌ (break μ΄μ©)
for (b = 0; b <11; b++) { if (b === 9) { break; } console.log(b) }
μλ°μ€ν¬λ¦½νΈ 20λΆμ§λ¦¬ κ°μλ₯Ό λ£κ³ μΆκ° κ²μμ ν΅ν΄ λ μμλ³΄κ³ μ§μ μ½λλ₯Ό μμ±ν΄λ³΄κ³ μ΄ν΄ν΄μ λΈλ‘κ·Έμ μ 리νκΈ°κΉμ§ κ±°μ κΌ¬λ° νλ£¨κ° κ±Έλ Έλ€. μ§λλ ν루μ ν νΈμ© λκ°λ κ±Έλ‘ μ λ©΄ μμ ν΄μΌ ν λ―.
κΉνλΈμλ TILμ μ¬λ¦¬κΈ° μμνλ€. λ΄μΌλΆν΄ μμ λͺ©λ³λ‘ λλ μ 컀λ°νλ €κ³ νλ€.
μ€λ 걸리긴 νμ΄λ λ°°μ°λ 건 κ±±μ νλ κ²λ³΄λ€ μ¬λ°μλλ° λ§μ§λ§μΌλ‘ μ°μ΅ λ¬Έμ λ₯Ό νμ΄λ³΄λ €λκΉ μ μ νλ¦°λ€. λλΆν° μ°κΈ° μμν΄μΌ ν μ§ μ λͺ¨λ₯΄κ² λ€. λ¬Έμ λ₯Ό λ§μ΄ μ ν΄λ΄μΌ ν κ±° κ°λ€. λ³΅μ΅ νμ.
κ²°κ³Όμ μΌλ‘ λ΄μΌ ν΄μΌ ν 건 javascript 볡μ΅, exercise ν΄κ²°, 'μλ°μ€ν¬λ¦½νΈ κΈ°μ΄ κ°μ' 5νΈ μκ°!
(211010 λ³΅μ΅ μ€)
μ λ΄κ° μ΄λ κ² μκ°νμꡬλ. λΆκ³Ό νλ¬ μ μΈλ°...μμ§λ λͺ¨λ₯΄λ κ² μ°λλ―Έμ§λ§, μ΄μ for ꡬ문μ 무μμ§ μλ€! π