Làm thế nào để bạn chuyển một đối tượng vào một biến trong javascript?

Nếu một hàm được gọi với các đối số bị thiếu (ít hơn so với khai báo), các giá trị bị thiếu được đặt thành undefined

Đôi khi điều này có thể chấp nhận được, nhưng đôi khi tốt hơn là gán giá trị mặc định cho tham số


Giá trị tham số mặc định

ES6 cho phép các tham số chức năng có giá trị mặc định

Thí dụ

Nếu y không được thông qua hoặc không xác định, thì y = 10

function myFunction(x, y = 10) {
  return x + y;
}
myFunction(

Tự mình thử »


Thông số phần còn lại chức năng

Tham số còn lại (. ) cho phép một hàm coi số lượng đối số không xác định là một mảng

Thí dụ

hàm tính tổng(. args) {
  let sum = 0;
  for (let args of args) sum += arg;
  return sum;
}

đặt x = tổng(4, 9, 16, 25, 29, 100, 66, 77);

Tự mình thử »



Đối tượng đối số

Các hàm JavaScript có một đối tượng tích hợp được gọi là đối tượng đối số

Đối tượng đối số chứa một mảng các đối số được sử dụng khi hàm được gọi (gọi)

Bằng cách này, bạn có thể chỉ cần sử dụng một hàm để tìm (ví dụ) giá trị cao nhất trong danh sách các số

Thí dụ

x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
  let max = -Infinity;
  for (let i = 0; i < đối số. chiều dài;
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}

Tự mình thử »

Hoặc tạo một hàm để tính tổng tất cả các giá trị đầu vào

Thí dụ

x = sumAll(1, 123, 500, 115, 44, 88);

function sumAll() {
  let sum = 0;
  for (let i = 0; i < đối số. chiều dài;
    sum += arguments[i];
  }
  return sum;
}

Tự mình thử »

Nếu một hàm được gọi với quá nhiều đối số (nhiều hơn so với khai báo), những đối số này có thể được truy cập bằng cách sử dụng đối tượng đối số


Các đối số được truyền theo giá trị

Tham số, trong lời gọi hàm, là đối số của hàm

Đối số JavaScript được truyền theo giá trị. Hàm chỉ biết các giá trị, không biết vị trí của đối số

Trong JavaScript, chúng ta có các hàm và chúng ta có các đối số mà chúng ta chuyển vào các hàm đó. Nhưng cách JavaScript xử lý những gì bạn truyền vào không phải lúc nào cũng rõ ràng. Không có "chuyển qua tham chiếu" cho bất kỳ biến nào trong JavaScript. Tất cả các biến và đối số được gán theo giá trị, nhưng đối với các đối tượng, giá trị của biến là một tham chiếu. Do đó, khi bạn truyền một đối tượng và thay đổi các thành viên của nó, những thay đổi đó vẫn tồn tại bên ngoài hàm. Điều này làm cho nó trông giống như vượt qua tham chiếu. Vì vậy, các giá trị Nguyên thủy như số, chuỗi, boolean được truyền theo giá trị trong khi Đối tượng và mảng được truyền theo tham chiếu như đã nói ở trên

Với các kiểu dữ liệu nguyên thủy

Trong trường hợp Kiểu dữ liệu nguyên thủy, nếu bạn thay đổi giá trị của Kiểu dữ liệu nguyên thủy bên trong một hàm, thay đổi này sẽ không ảnh hưởng đến biến ở phạm vi bên ngoài. Điều này có nghĩa là bất kỳ thay đổi nào đối với biến đó khi ở trong hàm đều hoàn toàn tách biệt với mọi thứ xảy ra bên ngoài hàm. Hãy cùng xem ví dụ sau

Trong ví dụ trên, chúng ta đang thay đổi biến "toDay" bên trong hàm changeDay, và hiển thị nó sau khi gọi hàm, nó vẫn có giá trị là "Sunday". Điều này là do khi các kiểu nguyên thủy được truyền theo giá trị. Điều này có nghĩa là bất kỳ thay đổi nào đối với biến đó khi ở trong hàm đều hoàn toàn tách biệt với mọi thứ xảy ra bên ngoài hàm. Đây là ý nghĩa khi chúng ta nói rằng chúng ta đang chuyển giá trị trong JavaScript

với đối tượng

Trong trường hợp Đối tượng, nếu bạn thay đổi giá trị của thuộc tính Đối tượng bên trong một hàm, thay đổi này sẽ ảnh hưởng đến biến ở phạm vi bên ngoài. Tất cả các biến và đối số được truyền theo giá trị, nhưng đối với các đối tượng, giá trị của biến là một tham chiếu. Truyền theo tham chiếu liên quan đến việc có hai tham chiếu trỏ đến cùng một đối tượng trong bộ nhớ. Điều này có nghĩa là bạn có thể thay đổi và đối tượng hoặc chức năng bằng cách gán nó cho một đối tượng khác hoặc chuyển nó dưới dạng tham số cho một hàm. Hãy cùng xem ví dụ sau

Trong ví dụ trên, chúng ta đang thay đổi biến "toDay" bên trong hàm changeDay, và hiển thị nó sau khi gọi hàm, giá trị của toDay được thay đổi thành "Monday". Điều này là do khi bạn chuyển một đối tượng vào hàm, bạn sẽ không chuyển một bản sao. Bạn đang chuyển tham chiếu trỏ đến đối tượng thisWeek. Vì vậy, khi bạn thay đổi thuộc tính của đối tượng đó trong hàm, bạn đang thay đổi thuộc tính của đối tượng trong phạm vi bên ngoài

Hiểu sự khác biệt giữa truyền theo giá trị và truyền theo tham chiếu là chìa khóa để hiểu cách thức hoạt động của các đối tượng và nguyên hàm JavaScript

Bạn có nhớ bộ dụng cụ sơ cứu trong chương 3 không? . Việc đóng gói hoặc chia khối như vậy, trong đó chúng ta coi một bộ sưu tập là số ít, là một phần quan trọng trong cách con người chúng ta đối phó với thông tin phức tạp, cả bằng ngôn ngữ và trí nhớ. Khi có nhu cầu, chúng ta có thể xem xét các yếu tố tạo nên bộ. thuốc sát trùng, cao dán, băng, v.v.

Bạn có thể chuyển các đối tượng theo giá trị không?

Giá trị của một đối tượng có thể thay đổi có thể được thay đổi khi nó được truyền vào một phương thức. Không thể thay đổi giá trị của đối tượng bất biến, ngay cả khi nó được truyền một giá trị mới. “Truyền theo giá trị” có nghĩa là chuyển một bản sao của giá trị . "Truyền theo tham chiếu" đề cập đến việc chuyển tham chiếu thực của biến trong bộ nhớ.

JavaScript có chuyển các đối tượng theo giá trị không?

Javascript luôn chuyển theo giá trị nên việc thay đổi giá trị của biến không bao giờ thay đổi giá trị nguyên thủy bên dưới (Chuỗi hoặc số). Tuy nhiên, khi một biến đề cập đến một đối tượng bao gồm mảng, giá trị là tham chiếu đến đối tượng.

Bạn có thể chuyển một biến sang JavaScript không?

Javascript chuyển theo giá trị. Trong javascript truyền theo giá trị, hàm được gọi bằng cách truyền trực tiếp giá trị của biến làm đối số . Do đó, ngay cả việc thay đổi đối số bên trong hàm cũng không ảnh hưởng đến biến được truyền từ bên ngoài hàm.

$_ trong JavaScript là gì?

Ký hiệu đô la ($) và các ký tự gạch dưới (_) là Các mã định danh JavaScript, điều này chỉ có nghĩa là chúng xác định một đối tượng theo cách giống như tên gọi. The objects they identify include things such as variables, functions, properties, events, and objects.