๐ ๋ฌด๊ถ๋ฌด์งํ ์๋ฐ์คํฌ๋ฆฝํธ์ธ๊ณ์ ๋น ์ ธ๋ณด์!
[] ==![] =>true
์ ํํ์์ ์๋์ ๊ฐ์ด ๋จ์ํ๋ ์ ์๋ค.
+[]==+![];
0 == +false;
0 == 0'
true;
์ถ์ํญ๋ฑ ์ฐ์ฌ์๋ ์์ชฝ์ ์ซ์๋ก ๋ณํํ์ฌ ๋น๊ตํ๊ณ ์๋ก ๋ค๋ฅธ ์ด์ ๋ก ๊ฒฐ๊ตญ ์์ชฝ์ ์ซ์๋ 0์ด ๋๋ค.
true == []; => false
true == ![]; => false
false == []; =>true
false == ![]; ==>true
[]
์ ๊ฐ์ง ์๋ค.toNumber(true) => 1
toNumber([])=> 0
true์ ![]
์ ๊ฐ์ง ์๋ค.
![]
์ false์ด๊ธฐ ๋๋ฌธ์ด๋ค.
false์ []์ ๊ฐ๋ค.
toNumber(false)๋ 0์ด๊ณ , toNumber([]) ๋ํ 0์ด๋ค.
!!"false" == !!"true"; => true
!!"false" ===!!"true"; =>true
true== "true"๋ false๋ค.
true๋ 1์ด๋ค. ๊ทธ๋ฌ๋ string์์ ์๋ 'true'
๋ NaN์ด๋ค.
์ด ๋ง์ ์ฆ false =="false"๋ false๋ค.
'false'๋ ๋น ์คํธ๋ง์ด ์๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ truthy value์ด๋ค.
!!"false" =>true๊ฐ ๋๋ค.
๋ฐฐ์ด์ truthyํ ๊ฐ์ด์ง๋ง true์ ๊ฐ์ง๋ ์๋ค.
!![] // => true
[] == true // => false
null
์ falsy๊ฐ์ด๋ผ๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ false๋ ์๋๋ค.
!!null //=>false
null == false; // =>false
๋์์ 0
๋๋ ''
์ ๊ฐ์ falsy๊ฐ์ false์ ๋์ผํ๋ค.
0 == false; //=>true
"" == false ; //=>true
Number.MIN_VALUE์ 0๋ณด๋ค ํฐ ๊ฐ์ฅ ์์ ์ซ์์ด๋ค.
Number.MIN_VALUE >0; // =>true
Number.MIN_VALUE
์ 5e0324์ด๋ค. ์ฆ ๋ถ๋ ์์์ ์ ๋ฐ๋ ๋ด์์ ํํํ ์ ์๋ ๊ฐ์ฅ ์์ ์์์ด๋ค. ์์๊ฐ ์ ๊ณตํ ์ ์๋ ์ต์์ ๊ฐ์ด๋ผ๊ณ ์ ์ํ ์ ์๋ค.
๋ ๊ฐ์ ๋ฐฐ์ด์ ์ถ๊ฐํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
[1,2,3]+[4,5,6]; // =>'1,2,34,5,6'
์๋๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ด๋ณด์.
[1,2,3]+[4,5,6]
[(1,2,3)].toString() +[4,5,6].toString();
"1,2,3"+"4,5,6";
// =>("1,2,34,5,6");
๋ฐฐ์ดํ๋ฑ์ ์๋์์ ๋ณผ ์ ์๋ฏ javascript์์๋ ๋ชฌ์คํฐ์ด๋ค.
[] == ' '
//=>true
[] == 0
//=>true
[''] == ''
//=>true
[0] == 0
// =>true
[0] == ''
//=>false
[''] == 0
// =>true
[null] == ''
//=>true
[null] == 0
//=>true
[undefined] == ''
//=>true
[undefined] == 0
//=>true
[[]] == 0
// true
[[]] == ''
// true
[[[[[[]]]]]] == ''
// true
[[[[[[]]]]]] == 0
// true
[[[[[[ null ]]]]]] == 0
// true
[[[[[[ null ]]]]]] == ''
// true
[[[[[[ undefined ]]]]]] == 0
// true
[[[[[[ undefined ]]]]]] == ''
// true
Number์์ฑ์์ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด 0๊ฐ์ ์ป๊ฒ ๋๋ค. ์ค์ ์ธ์๊ฐ ์๋ ๊ฒฝ์ฐ undefined๊ฐ์ด ํ์ ์ธ์์ ํ ๋น๋๊ธฐ์ ์ธ์๊ฐ ์๋ Number๋ ๋งค๊ฐ ๋ณ์ ๊ฐ์ผ๋ก undefined๋ฅผ ์ฌ์ฉํ๋ค. ๊ทธ๋ฌ๋ undefined๋ฅผ ํต๊ณผํ๋ฉด NaN์ ์ป์ ์ ์๋ค.
Number();
// => 0
Number(undefined);
// =>NaN
parseInt
์ ํน์ดํ ์ ์ผ๋ก ์ ๋ช
ํ๋ค.
parseInt("f*k");
//=>NaN
parseInt("f*k",16);
// =>15
์์ ๊ฐ์ ์ํฉ์ parseInt๋ ์ ์ ์๋ ๋ฌธ์์ ๋๋ฌํ ๋๊น์ง ๋ฌธ์๋ณ๋ก ๊ณ์ ๊ตฌ๋ฌธ ๋ถ์์ ํ๊ธฐ์ ๋ฐ์ํ๋ค. f*k
์์ f๋ 16์ง์๋ก 15์ด๋ค.
๋ถ๋ ์์์ ๊ฐ์ ํ์ฑํ๋ ๋์ ์ฃผ์ํ์.
parseInt(0.000001);
// -> 0
parseInt(0.0000001);
// -> 1
parseInt(1 / 1999999);
// -> 5
parseInt์ ๋ฌธ์์ด ์ธ์๋ฅผ ์ทจํ๊ณ ์ง์ ๋ ๊ธฐ์์ ์ ์๋ฅผ ๋ฐํํ๋ค.
0.000001
์ ๋ฌธ์์ด "0.000001"๋ก ๋ฐ๋๊ณ parseInt์ 0์ผ๋ก ๋ฐํ๋๋ค. 0.0000001
์ด ๋ฌธ์์ด๋ก ๋ณํ๋๋ฉด"1e-7"๋ก ๋๋ฏ๋ก
parseInt์ 1
์ ๋ฐํํ๋ค.1/1999999
์ 5.00000250000125e-7
๋ก ํด์๋๊ณ parseInt์5
์ ๋ฆฌํดํ๋ค.
์๋ ๊ธ์ ์ฐธ๊ณ ํด ์์ฑํ๋ค.
https://github.com/denysdovhan/wtfjs/blob/master/README-kr.md