Function Javascript – Phần 1 khái niệm function

function javascript là gì
function javascript là gì

1. Function javascript là gì?

Các kiểu dữ liệu trong javascript

Toán tử trong javascript

  • Functions là các đối tượng lớp đầu tiên trong JS, giống như bất kỳ đối tượng khác
  • Chúng có thể được lưu trữ trong các biến, được truyền vào các function khác dưới dạng đối số và được xây dựng tại thời điểm chạy
  • Chúng có các thuộc tính (như các đối tượng)
  • Chúng có thể được lồng trong các function khác

 Tuyển lập trình viên PHP lương upto $2000

Tuyển lập trình viên .Net lương upto $1800

function sayHi(name) {

  console.log(“Hello, ” + name);

}

sayHi(“khoibv”); // “Hello, khoibv”

  • Javascript hỗ trợ function statement(câu lệnh function) và function expression(biểu thức function)

Dưới là function giống hệt nhau nhưng cách viết khác thôi.

    • function foo(arg) { … } (function statement)
    • var foo = function(arg) { … }          (function expression)
  • arguments` là một biến cục bộ (array) có sẵn trong mọi function. Nó chứa tất cả tham số truyền tới function

function say() {

    console.log(arguments[0] + ‘, ‘ + arguments[1])

}

say(‘Hello’, ‘world’) // Hello, world

function say không có tham số, nhưng chúng ta có thể truyền và truy cập tham số bằng cách sử dụng biến arguments

  • Javascript không có định nghĩa `class`, chúng ta không thể thấy từ khóa `class` trong javascript nhưng chúng ta có thể sử dụng function để khai báo một class

// Declare class Animation with 1 field `name`

function Animation(name) {

    this.name = name;

}

// Declare method to start animation

Animation.prototype.start = function() {

    // In this method, this.name is the value of an instance of Animation class

    console.log(“Start animation ” + this.name);

};

// Declare method to stop

Animation.prototype.stop = function() {

    console.log(“Stop animation ” + this.name);

};

// Test it

let instance = new Animation(“FadeOut”);

instance.start();// Start animation FadeOut

instance.stop(); // Stop animation FadeOut

  • Chúng ta có thể tạo một anonymous function(function ẩn danh, không cần tên) và có thể chạy nó ngay lập tức.
    • It named IIFE (Immediately Invoked Function Expression). Tạm dịch là biểu thức function được gọi ngay lập tức

Ví dụ 1:

(function(foo, bar) {

    document.write(foo * bar);

})(10, 2); // 20  Cặp dấu ngoặc đơn ở cuối khai báo thực thi function ngay lập tức

Ví dụ 2: trong jquery-ui source

(function(factory) {

  if (typeof define === “function” && define.amd) {

     // AMD. Register as an anonymous module.

     define([“jquery”, “./version”], factory);

  } else {

     // Browser globals

     factory(jQuery);

  }

})(function($) {

  // jquery-ui processing

});

Ví dụ 3: Google Analytics on vnexpress.net

(function(i, s, o, g, r, a, m) {

  i[“GoogleAnalyticsObject”] = r;

  (i[r] =

    i[r] ||

    function() {

      (i[r].q = i[r].q || []).push(arguments);

    }),

    (i[r].l = 1 * new Date());

  (a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);

  a.async = 1;

  a.src = g;

  m.parentNode.insertBefore(a, m);

})(

  window,

  document,

  “script”,

  “https://www.google-analytics.com/analytics.js”,

  “ga”

);

  • ES6 có ngữ pháp mới: arrow function(function mũi tên)

Nó giống như biểu thức lambda trong Java và C#

Ví dụ 1:

// normal function

function sayHello(name) {

    var upperFirstLetter = name[0].toUpperCase() + name.substring(1);

    console.log(“Hello ” + upperFirstLetter);

}

sayHello(“foo”); // Hello Foo

// arrow function
const sayHello2 = (name) => {

    var upperFirstLetter = name[0].toUpperCase() + name.substring(1);

    console.log(“Hello ” + upperFirstLetter);

};

sayHello2(“bar”); // Hello Bar

Format of arrow function:

(argument1, argument2, Hello Bar… argumentN) => {

   // function body
}

Ví dụ 2:

const words = [‘hello’, ‘WORLD’, ‘Whatever’];

const downcasedWords = words.map(word => word.toLowerCase()); // hello, world, whatever

 

 

Be the first to comment

Leave a Reply

Your email address will not be published.


*