<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>arrow function là gì - Thien An Blog</title>
	<atom:link href="https://thienanblog.com/tag/arrow-function-la-gi/feed/" rel="self" type="application/rss+xml" />
	<link>https://thienanblog.com/tag/arrow-function-la-gi/</link>
	<description>Javascript - PHP - SEO - Web Development</description>
	<lastBuildDate>Sat, 07 Oct 2017 06:36:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://thienanblog.com/wp-content/uploads/2017/05/TAB_favicon.ico.png</url>
	<title>arrow function là gì - Thien An Blog</title>
	<link>https://thienanblog.com/tag/arrow-function-la-gi/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Sự khác biệt giữa Arrow Function và Function thông thường</title>
		<link>https://thienanblog.com/javascript/javascript-co-ban/su-khac-biet-giua-arrow-function-va-function-thong-thuong/</link>
					<comments>https://thienanblog.com/javascript/javascript-co-ban/su-khac-biet-giua-arrow-function-va-function-thong-thuong/#respond</comments>
		
		<dc:creator><![CDATA[Ân Vũ]]></dc:creator>
		<pubDate>Sun, 03 Sep 2017 13:42:26 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Javascript cơ bản]]></category>
		<category><![CDATA[anonymous function và arrow function]]></category>
		<category><![CDATA[arrow function là gì]]></category>
		<category><![CDATA[arrow function trong es6]]></category>
		<category><![CDATA[Arrow Function và Function có giống nhau không]]></category>
		<category><![CDATA[cách sử dụng Arrow Function]]></category>
		<category><![CDATA[function và arrow function]]></category>
		<category><![CDATA[sự khác biệt giữa Arrow Function]]></category>
		<category><![CDATA[sự khác nhau giữa Arrow Function]]></category>
		<category><![CDATA[sự khác nhau giữa Arrow Function và Function]]></category>
		<category><![CDATA[tìm hiểu arrow function]]></category>
		<guid isPermaLink="false">https://thienanblog.com/?p=283</guid>

					<description><![CDATA[<p>Sơ lược về bài viết Ở bài viết trước, chúng ta đã xem qua Tìm hiểu về một số cú pháp ES6 trong JavaScript . Trong bài viết này, chúng ta sẽ&#8230;</p>
<p>The post <a href="https://thienanblog.com/javascript/javascript-co-ban/su-khac-biet-giua-arrow-function-va-function-thong-thuong/">Sự khác biệt giữa Arrow Function và Function thông thường</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://thienanblog.com/wp-content/uploads/2017/09/arrow-funcs.png"><img fetchpriority="high" decoding="async" class="wp-image-284 aligncenter" src="https://thienanblog.com/wp-content/uploads/2017/09/arrow-funcs.png" alt="" width="407" height="226" srcset="https://thienanblog.com/wp-content/uploads/2017/09/arrow-funcs.png 1080w, https://thienanblog.com/wp-content/uploads/2017/09/arrow-funcs-300x167.png 300w, https://thienanblog.com/wp-content/uploads/2017/09/arrow-funcs-768x427.png 768w, https://thienanblog.com/wp-content/uploads/2017/09/arrow-funcs-1024x569.png 1024w" sizes="(max-width: 407px) 100vw, 407px" /></a></p>
<h3>Sơ lược về bài viết</h3>
<div>Ở bài viết trước, chúng ta đã xem qua <a href="https://thienanblog.com/javascript/cu-phap-es6-es2015-trong-javascript/">Tìm hiểu về một số cú pháp ES6 trong JavaScript</a> . Trong bài viết này, chúng ta sẽ tìm hiểu về sự khác biệt giữa Arrow Function và Function thông thường khi sử dụng trên thực tế. Tuy <a href="https://thienanblog.com/javascript/cu-phap-es6-es2015-trong-javascript/">Arrow Function</a> và Function phần giống nhau về cách định nghĩa 1 hàm nhưng tham chiếu đến bối cảnh (<strong>context</strong>) hay môi trường xung quanh nó sẽ khác. Vậy tham chiếu đến bối cảnh hay môi trường xung quanh là như thế nào? Chúng ta sẽ cùng bắt đầu tìm hiểu.</div>
<div></div>
<p><span id="more-283"></span></p>
<p>Các chủ đề mà chúng ta sẽ tìm hiểu như sau:</p>
<ol>
<li>Ví dụ cơ bản về bối cảnh (<strong>context</strong>)</li>
<li>Ví dụ bối cảnh khi dùng trong setTimeout kết hợp với jQuery</li>
<li>Một ví dụ khác khi kết hợp Arrow Function với Animation của jQuery</li>
<li>Arrow Function thường được dùng trên Class (ES6)</li>
</ol>
<h3>Ví dụ cơ bản về bối cảnh (<strong>context</strong>)</h3>
<div>Vậy bối cảnh ở đây là gì? Thật khó để định nghĩa cho các bạn chính xác được nghĩa của nó ở ngữ cảnh tiếng Việt. Vì thế các bạn chỉ cần hiểu đơn giản là từ khóa <span class="lang:default decode:true crayon-inline">this</span> được sử dụng trong Function thông thường và Arrow Function sẽ tham chiếu đến những môi trường hay bối cảnh khác nhau. Để tránh khó hiểu thêm, các bạn hãy xem qua ví dụ bên dưới:</div>
<div><p class='codepen'  data-height='265' data-theme-id='0' data-slug-hash='dzrMag' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen Sự khác nhau giữa Function thông thường và Arrow Function by An Vu (@thienanblog) on CodePen.</p>
</div>
<div>
<div>Ở ví dụ này các bạn cũng đã thấy từ khóa <span class="lang:default decode:true crayon-inline">this</span> của chúng ta có giá trị khác biệt, <span class="lang:default decode:true crayon-inline ">this</span> ở function thường sẽ tham chiếu đến chính Object chứa nó, còn Arrow Function sẽ tham chiếu đến cha gần nhất của nó nên vì thế nó hiểu từ khóa <span class="lang:default decode:true crayon-inline">this</span> của function cha bao hàm nó.</div>
<div></div>
<div>Và khi các bạn có dùng thêm <span class="lang:default decode:true crayon-inline ">use strict</span> để ràng buộc chặt chẽ hơn về <a href="https://thienanblog.com/javascript/javascript-co-ban/bai-2-pham-vi-hoat-dong-cua-bien-trong-javascript/">phạm vi hoạt động của biến</a> thì <span class="lang:default decode:true crayon-inline ">this</span>  trong Arrow Function có giá trị sẽ là <span class="lang:default decode:true crayon-inline ">undefined</span> thay vì trả về cho các bạn đối tượng <span class="lang:default decode:true crayon-inline">window</span>. Nên các bạn hãy chú ý điều này.</div>
</div>
<h3>Ví dụ bối cảnh khi dùng trong setTimeout kết hợp với jQuery</h3>
<p class='codepen'  data-height='265' data-theme-id='0' data-slug-hash='RZdRrX' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen Bối cảnh khi dùng trong setTimeout kết hợp với jQuery của Arrow Function by An Vu (@thienanblog) on CodePen.</p>

<div>
<div>Như các bạn cũng thấy rằng ở <a href="https://thienanblog.com/javascript/javascript-co-ban/bai-6-anonymous-function-va-closure/">Anonymous Function</a>, chúng ta phải lưu tạm <span class="lang:default decode:true crayon-inline">this</span> của phương thức click vào biến <span class="lang:default decode:true crayon-inline">btn</span> để có thể truyền vào bên trong setTimeout. Trong đó, từ khóa <span class="lang:default decode:true crayon-inline ">this</span> ở đối số của setTimeout được tham chiếu đến chính Anonymous Function của nó. Vì vậy, nó sẽ không hiểu <span class="lang:default decode:true crayon-inline ">this</span> ở đây có ý nghĩa là btn chứ không phải là Anonymous Function đang được dùng.</div>
<div></div>
<div>Và khi các bạn dùng Arrow Function, chúng ta đã đơn giản hóa đi 1 bước khi dùng, giúp cho code của chúng ta dễ hiểu hơn là <span class="lang:default decode:true crayon-inline ">this</span> này được tham chiếu đến chính Anonymous Function của phương thức click của jQuery chứ không phải chính nó nữa.</div>
</div>
<div></div>
<h3>Một ví dụ khác khi kết hợp Arrow Function với Animation của jQuery</h3>
<p class='codepen'  data-height='265' data-theme-id='0' data-slug-hash='QMoNoN' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen Một ví dụ khác khi kết hợp Arrow Function với Animation của jQuery by An Vu (@thienanblog) on CodePen.</p>

<p>Tương tự với ví dụ ở trên, trong ví dụ này tôi chủ yếu muốn cho các bạn thêm một số kinh nghiệm khi sử dụng trên thực tế như thế nào.</p>
<h3>Arrow Function thường được dùng trên Class</h3>
<div>Chuẩn ES6 cho phép chúng ta có thể viết class giống như những ngôn ngữ khác mà các bạn có thể đã từng biết qua, nếu chưa biết thì bây giờ các bạn biết, không sao cả. Tuy nhiên, class trong Javascript có những quy ước và cách khởi tạo thuộc tính khác biệt so với các ngôn ngữ từng được biết. Thông qua ví dụ này, phần nào các bạn cũng sẽ thích thú viết class hơn là viết function thông thường.</div>
<div><p class='codepen'  data-height='265' data-theme-id='0' data-slug-hash='gxEryV' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>
See the Pen Arrow Function trên Class by An Vu (@thienanblog) on CodePen.</p>
</div>
<div>
<div>Khi chạy ví dụ này, các bạn cũng sẽ thấy rằng việc chúng ta sử dụng Function thông thường trên Class sẽ khiến từ khóa <span class="lang:default decode:true crayon-inline ">this</span> của chúng ta có giá trị <span class="lang:default decode:true crayon-inline">undefined</span> ngay. Nên Arrow Function cũng thường rất được dùng trên Class thay vì Function thông thường. Chỉ là thường dùng thôi nhé, vì một số trường hợp chúng ta vẫn phải sử dụng Function thông thường để tham chiếu đến <span class="lang:default decode:true crayon-inline ">this</span> của chính nó. Thường là các callback được gọi từ các sự kiện của thư viện bên ngoài mà chúng ta sử dụng.</div>
<div></div>
<div>Nếu bạn vẫn còn hứng thú thì hãy xem qua sự kiện onSet trong thư viện <strong><a href="http://amsul.ca/pickadate.js/">Pickadate</a></strong> để hiểu rõ hơn tôi nói cái gì. Nếu như chúng ta dùng Arrow Function trong trường hợp đó thì chắc chắn sẽ nhận sai giá trị ngay. Vì vậy, hãy đón xem ở 1 bài viết khác về thư viện Pickadate này mà tôi sẽ viết sắp tới các bạn nhé.</div>
<div></div>
<div>Qua bài viết này, chúng ta cũng đã tìm hiểu xong sự khác biệt giữa Arrow Function và Function thông thường như thế nào rồi. Cám ơn các bạn đọc giả đã ủng hộ Website.</div>
</div>
<p>The post <a href="https://thienanblog.com/javascript/javascript-co-ban/su-khac-biet-giua-arrow-function-va-function-thong-thuong/">Sự khác biệt giữa Arrow Function và Function thông thường</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thienanblog.com/javascript/javascript-co-ban/su-khac-biet-giua-arrow-function-va-function-thong-thuong/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Tìm hiểu về một số cú pháp ES6 trong JavaScript</title>
		<link>https://thienanblog.com/javascript/javascript-co-ban/cu-phap-es6-es2015-trong-javascript/</link>
					<comments>https://thienanblog.com/javascript/javascript-co-ban/cu-phap-es6-es2015-trong-javascript/#respond</comments>
		
		<dc:creator><![CDATA[Ân Vũ]]></dc:creator>
		<pubDate>Thu, 31 Aug 2017 19:10:27 +0000</pubDate>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Javascript cơ bản]]></category>
		<category><![CDATA[arrow function là gì]]></category>
		<category><![CDATA[const trong javascript]]></category>
		<category><![CDATA[cú pháp es2015]]></category>
		<category><![CDATA[cú pháp es6]]></category>
		<category><![CDATA[es2015 là gì]]></category>
		<category><![CDATA[es6 là gì]]></category>
		<category><![CDATA[hằng số trong javascript]]></category>
		<category><![CDATA[let trong javascript]]></category>
		<category><![CDATA[let và const]]></category>
		<category><![CDATA[tìm hiểu về es6]]></category>
		<guid isPermaLink="false">https://thienanblog.com/?p=270</guid>

					<description><![CDATA[<p>Giới thiệu Cú pháp ES6 hay còn được gọi là ES2015 đều là những chuẩn chung để nói về cú pháp mới trong JavaScript, kể cả sau này chúng ta&#8230;</p>
<p>The post <a href="https://thienanblog.com/javascript/javascript-co-ban/cu-phap-es6-es2015-trong-javascript/">Tìm hiểu về một số cú pháp ES6 trong JavaScript</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3><a href="https://thienanblog.com/wp-content/uploads/2017/08/a-bright-new-future-is-comming.jpg"><img decoding="async" class="aligncenter wp-image-271" src="https://thienanblog.com/wp-content/uploads/2017/08/a-bright-new-future-is-comming.jpg" alt="JS ES6" width="442" height="332" srcset="https://thienanblog.com/wp-content/uploads/2017/08/a-bright-new-future-is-comming.jpg 1024w, https://thienanblog.com/wp-content/uploads/2017/08/a-bright-new-future-is-comming-300x225.jpg 300w, https://thienanblog.com/wp-content/uploads/2017/08/a-bright-new-future-is-comming-768x576.jpg 768w" sizes="(max-width: 442px) 100vw, 442px" /></a></h3>
<h3>Giới thiệu</h3>
<div>Cú pháp ES6 hay còn được gọi là ES2015 đều là những chuẩn chung để nói về cú pháp mới trong JavaScript, kể cả sau này chúng ta cũng có thể gặp ES7 (đã ra mắt 2016) và ES8 nữa không chừng. Ngoài những cú pháp mới hỗ trợ cho các lập trình viên tận răng sức mạnh từ JavaScript, các cú pháp cũ của chúng ta cũng sẽ được thay đổi và nâng cấp theo chuẩn mới. Giúp cho mã nguồn chúng ta dễ đọc và dễ quản lý hơn.</div>
<h3>Sơ lược về bài viết</h3>
<div>
<div>Trong bài viết này chúng ta sẽ tìm hiểu qua các chủ đề sau:</div>
<ol>
<li>Cú pháp khởi tạo biến (<strong>Variable</strong>) hoặc hằng số (<strong>Constant</strong>)</li>
<li>Tìm hiểu nội suy chuỗi (<strong>String Interpolation</strong>)</li>
<li>Tìm hiểu về các giá trị mặc định (<strong>Default Values</strong>) của các tham số (<strong>Parameters</strong>) trong hàm (<strong>Function</strong>)</li>
<li>Tìm hiểu về <strong>Arrow Function</strong> và <strong>cách viết tắt</strong> của <strong>Arrow Function</strong></li>
</ol>
</div>
<div>
<h3>Cú pháp khởi tạo biến hoặc hằng số</h3>
<div>Trong cú pháp ES6, các bạn có thể dùng từ khóa <span class="lang:default decode:true crayon-inline ">let</span>và <span class="lang:default decode:true crayon-inline">const</span> để định nghĩa 1 biến hay hằng số. Những vấn đề này có lẽ các bạn đã từng khá quen thuộc nếu như đã từng học qua lập trình ở các ngôn ngữ khác rồi.</div>
<div>
<div>
<pre class="lang:js decode:true">// Cú pháp khởi tạo biến và hằng số
let numVar = 1;
let stringVar = 'Hello World!!!';
// numVar += 1; ==&gt; numVar === 2

const numConst = 1;
const stringConst = 'Hello World!!!';
// numConst += 1; ==&gt; error</pre>
</div>
<div>Ở đoạn code trên cho các bạn thấy rằng, cách thức sử dụng <span class="lang:default decode:true crayon-inline ">let</span>  hoàn toàn không khác gì so với cách chúng ta sử dụng <span class="lang:default decode:true crayon-inline">var</span>  cả. Vì thế các bạn nên sử dụng <span class="lang:default decode:true crayon-inline ">let</span>  thay vì <span class="lang:default decode:true crayon-inline ">var</span>  trong mã nguồn để tránh gặp lại các lỗi xưa kia mà Javascript từng bị mắc phải và đã được thay thế ở cú pháp mới.</div>
</div>
</div>
<div>
<h3>Nội suy chuỗi</h3>
<div>Trước đây để có thể nối các chuỗi ở các biến lại với nhau, ta thường dùng phép cộng (<span class="lang:default decode:true crayon-inline ">+</span> ) để cộng các vế lại sẽ ra được 1 chuỗi hoàn chỉnh. Thì với cú pháp ES6 này, việc sử dụng biến hoặc hằng số trực tiếp trong chuỗi giúp đơn giản hóa việc chúng ta gõ và code nhìn cũng sạch sẽ hơn rất nhiều.</div>
<div>
<pre class="lang:js decode:true">// Nội suy chuỗi (String Interpolation)
let stringVar = 'Hello World!!!';
console.log(`Nội suy chuỗi: ${stringVar}`); // ==&gt; "Nội suy chuỗi: Hello World!!!"

function stringInterpolation() {
  return 'stringInterpolation đã được gọi!!!';
}
console.log(`Nội suy chuỗi: ${stringInterpolation()}`);</pre>
</div>
<div>Các bạn thấy đấy để có thể nội suy một biến nào đó bên trong rất là dễ dàng đúng không? Javascript sẽ tự hiểu và thay thế hoặc gọi lại hàm mà bạn muốn bên trong dấu hiệu <span class="lang:default decode:true crayon-inline ">${}</span>này.</div>
</div>
<div>
<h3>Tìm hiểu về các giá trị mặc định của các tham số trong hàm</h3>
<div>Trước đây, để các bạn có thể định nghĩa được các tham số mặc định khi truyền vào thì cách truyền thống sẽ như thế này:</div>
<div>
<pre class="lang:js decode:true">function originalDefaultValues(a, b) {
     a = a || 1; // Nếu có giá trị và không rỗng hoặc sai(false) thì set là a, nếu không sẽ là 1
     b = b || 2; // Tương tự như trên
}</pre>
</div>
<div>
<p>Và với cú pháp mới, Javascript đã cho phép chúng ta viết dễ dàng hơn hẳn:</p>
<pre class="lang:js decode:true">// Các giá trị mặc định của các tham số trong Function
function defaultParams(a = 1, b = 2) {
  console.log(`Giá trị mặc định: ${a} - ${b}`);
}
defaultParams();</pre>
<h3>Tìm hiểu về Arrow Function và cách viết tắt của Arrow Function</h3>
<div>Arrow Function hay còn gọi là hàm mũi tên, nhưng mà tốt nhất thì các bạn đừng dịch ra vì nghe nó rất &#8220;củ chuối&#8221;. Nó thừa hưởng cách viết ngắn gọn bằng cú pháp ES6 nhưng bên trong nó sẽ có nhiều điểm khác biệt so với hàm thông thường mà chúng ta được biết.</div>
<div>
<pre class="lang:js decode:true">// Function thông thường
function regularFunc() {
  this.hello = 'Hello Regular Function';
  console.log('regularFunc: ' + this.hello);
}
regularFunc();

// Anonymous Function
let anonymousFunc = function() {
  this.hello = 'Hello Anonymous Function';
  console.log('anonymousFunc: ' + this.hello);
}
anonymousFunc();

// Arrow Function
let arrowFunc = () =&gt; {
  // this ở đây sẽ không hiểu nếu bạn dùng 'use strict' ở Javascript hoặc khi dùng Babel
  this.hello = 'Hello Arrow Function';
  console.log('arrowFunc: ' + this.hello);
}
arrowFunc();

// Một số cách viết tắt trong Arrow Function
let full = (a = 1 , b = 2) =&gt; {
  return a + b;
}
full(); // full === 3
let one = a =&gt; a; one(5); // one === 5
let two = (a, b) =&gt; a + b; two(1, 2) // two === 3</pre>
</div>
<div>Qua đoạn code trên thì các bạn cũng sẽ được thấy 2 cách thông dụng nhất từ trước đến nay là Function thông thường và cách sử dụng <a href="https://thienanblog.com/javascript/javascript-co-ban/bai-6-anonymous-function-va-closure/">Anonymous Function</a> (Hàm vô danh &#8211; một cách khởi tạo hàm khác của hàm thông thường) để khởi tạo hàm thì nay chúng ta sẽ tạo hàm bằng cú pháp gần như tương đương với 2 cách trên.</div>
<div></div>
<div>
<div>
<div>
<div>Ngoài ra, các bạn còn được hỗ trợ thêm cho việc &#8220;lười biếng&#8221; với các cách viết tắt không kém phần khó hiểu khi sử dụng ban đầu. Vậy đâu là sự khác biệt giữa Function thông thường và Arrow Function ??? Mời đọc giả hãy đón xem ở các bài viết sau.</div>
</div>
</div>
</div>
</div>
<h3>Source tham khảo</h3>
<div><p class='codepen'  data-height='300' data-theme-id='0' data-slug-hash='dzaBNB' data-default-tab='js,result' data-animations='run' data-editable='' data-embed-version='2'>

See the Pen Tìm hiểu cú pháp ES6 by Ân Vũ (@thienanblog) on CodePen
</p>
</div>
</div>
<div></div>
<p>The post <a href="https://thienanblog.com/javascript/javascript-co-ban/cu-phap-es6-es2015-trong-javascript/">Tìm hiểu về một số cú pháp ES6 trong JavaScript</a> appeared first on <a href="https://thienanblog.com">Thien An Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://thienanblog.com/javascript/javascript-co-ban/cu-phap-es6-es2015-trong-javascript/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
