Javascript
-
Function ํ์
- ํจ์๋ ๊ฐ์ฒด์ด๋ค.
- ์ค๋ฒ๋ก๋ฉ์ ์๋ค.
- ๋ง์ง๋ง์ ์ ์ํ ํจ์๊ฐ ์ด์ ์ ์ ์ํ ํจ์๋ฅผ ๋ฎ์ด์์ ์ฝ๊ฒ ์ดํด ํ ์ ์๋ค.
{% highlight javascript %} function addSomeNumber(num){ // 1๋ฒ return num + 100; } function addSomeNumber(num){ // 2๋ฒ return num + 200; } var result = addSomeNumber(100); // 300 2๋ฒ ํธ์ถ {% endhighlight %}
-
ํจ์ ์ ์ธ vs ํจ์ ํํ์ (Hoisting)
-
ํจ์ ์ ์ธ์ ์ด๋ค ์ฝ๋๋ ์คํํ๊ธฐ ์ ์ ์ด๋ฏธ ๋ชจ๋ EC์์ ์ ๊ทผํ๊ณ ์คํํ ์ ์๋ค.
Hoisting์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ฝ๋๋ฅผ ํ๊ฐํ ๋ ์ ์ผ ๋จผ์ ํจ์ ์ ์ธ์ ์ฐพ์ ๋ค์ ์ด๋ค์ ๋งจ ์๋ก ์ฌ๋ฆฌ๋ ๊ณผ์ ์ ๋งํ๋ค.
- ํจ์ ํํ์์ ์ฝ๋ ์คํ์ด ํด๋น ์ค๊น์ง ์งํํ๊ธฐ ์ ์๋ ์ฌ์ฉํ ์ ์๋ค.
-
{% highlight javascript %} alert(sum(10,10)); function sum(num1,num2){ // ํจ์ ์ ์ธ return num1 + num2; } {% endhighlight %}
{% highlight javascript %} alert(sum(10,10)); // error ํจ์๊ฐ ์ ์๋์ด ์์ง ์๋ค. var sum = function (num1,num2){ // ํจ์ ํํ์ return num1 + num2; } {% endhighlight %}
-
๊ฐ์ฒ๋ผ ์ฐ๋ ํจ์
{% highlight javascript %} // someFunction : ํจ์๋งค๊ฐ๋ณ์, someArgument : ์ฝ๋ฐฑ ํจ์์ ๋๊ธธ ๊ฐ function callSomeFunction(someFunction, someArgument){ return someFunction(someArgument); } {% endhighlight %}
{% highlight javascript %} function add10(num){ return num + 10; } var result = callSomeFunction(add10,10); alert(result); // 20
function getGreeting(name){ return โHello โ + name; } var result2 = callSomeFunction(getGreeting,โNESOYโ); alert(result2); // Hello NESOY {% endhighlight %}
-
ํจ์์ ๋ด๋ถ ๊ตฌ์กฐ
- ํจ์ ๋ด๋ถ์๋ argument, this ๊ฐ์ฒด๊ฐ ์กด์ฌ
- argument์ property์ callee : ๊ฐ์ฒด์ ์์ ์์ธ ํจ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
- caller , callee์ ํตํด ํจ์์ ์ด๋ฆ ์ฌ์ด์ ์์กด์ฑ์ ์ ๊ฑฐ
{% highlight javascript %} function factorial(num){ if ( num โ 1){ return 1; } else { return num * argument.callee(num-1); } } {% endhighlight %}
-
ํจ์์ ํ๋กํผํฐ์ Method
- ๋ชจ๋ ํจ์์ length, prototype์ด ์กด์ฌ
- length : ํจ์์ ๋งค๊ฐ๋ณ์ ๊ฐฏ์
- prototype : ๋ชจ๋ ์ฐธ์กฐ ํ์ ์ ์ธ์คํด์ค ๋ฉ์๋๊ฐ ์กด์ฌํ๋ ๊ณณ
- apply(), call() ํจ์ ์กด์ฌ
{% highlight javascript %} function sum(num1, num2){ return num1 + num2; } function callSum1(num1, num2){ return sum.apply(this, arguments); // arguments ๊ฐ์ฒด๋ฅผ ๋๊ธด๋ค. } function callSum2(num1, num2){ //ํ๋ ํ๋ ๋๊ฒจ์ฃผ์ด์ผ ํ๋ค. return sum.call(this, num1, num2); } alert(callSum1(10,10)); // 10 alert(callSum2(10,10)); // 10
{% endhighlight %}
-
bind()๋ผ๋ ํจ์๋ฅผ ํตํด this๋ฅผ ๊ต์ฒด ํ ์ ์๋ค.
-
๋ด์ฅ๋ ์ฑ๊ธํค ๊ฐ์ฒด
-
encodeURI(), encodeURIComponent()๋ ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌํ URI๋ฅผ ์ธ์ฝ๋ํ๋ ๋ฉ์๋
-
์ ํจํ URI๋ ๊ณต๋ฐฑ๋ฌธ์ ๋ฑ์ ์ผ๋ถ ํน์ ๋ฌธ์๋ฅผ ํฌํจํ ์ ์๋ค.
-
decodeURI(), decodeURIComponent()๋ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋งํด ๋ฒ ์ด์ค URI๋ค์ ์ถ๊ฐํ ์ฟผ๋ฆฌ์คํธ๋ง์ ์ธ์ฝ๋ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฏ๋ก encodeURIComponent()๋ฅผ ํจ์ฌ ์์ฃผ ์ฐ๊ฒ ๋๋ค.
- eval() : ๋ฌธ์์ด์ ์ฝ๋๋ก ๋ณํํ์ฌ ์คํํ๋ค.
-
-
Math ๊ฐ์ฒด
- min(), max()
- random()