Hướng dẫn how to pass variable in javascript - cách truyền biến trong javascript


JavaScript function không thực hiện bất kỳ kiểm tra nào trên các giá trị tham số (đối số).


Tham số và đối số chức năng

Trước đó trong hướng dẫn này, bạn đã học được rằng các chức năng có thể có các tham số: parameters:

hàm functionName (tham số1, tham số2, tham số3) {& nbsp; // Mã được thực thi}
  // code to be executed
}

Các tham số chức năng là các tên được liệt kê trong định nghĩa chức năng.parameters are the names listed in the function definition.

Đối số chức năng là các giá trị thực được truyền đến (và nhận được bởi) hàm.arguments are the real values passed to (and received by) the function.


Quy tắc tham số

Định nghĩa chức năng JavaScript không chỉ định các loại dữ liệu cho các tham số.

Các hàm JavaScript không thực hiện kiểm tra loại trên các đối số được truyền.

Các hàm JavaScript không kiểm tra số lượng đối số nhận được.


Tham số mặc định

Nếu một hàm được gọi với các đối số bị thiếu (ít hơn được khai báo), các giá trị bị thiếu được đặt thành undefined.missing arguments (less than declared), the missing values are set to undefined.

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

Thí dụ

hàm myfunction (x, y) {& nbsp; if (y === không xác định) {& nbsp; & nbsp; & nbsp; y = 2; & nbsp; }}
  if (y === undefined) {
    y = 2;
  }
}

Hãy tự mình thử »


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

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

Thí dụ

hàm myfunction (x, y) {& nbsp; if (y === không xác định) {& nbsp; & nbsp; & nbsp; y = 2; & nbsp; }}

Hãy tự mình thử »
  return x + y;
}
myFunction(5);

Hãy tự mình thử »


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

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

Thí dụ

hàm myfunction (x, y) {& nbsp; if (y === không xác định) {& nbsp; & nbsp; & nbsp; y = 2; & nbsp; }}
  let sum = 0;
  for (let arg of args) sum += arg;
  return sum;
}

Hãy tự mình thử »

Hãy tự mình thử »



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

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

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

hàm myfunction (x, y = 10) {& nbsp; trả về x + y;} myfunction (5);

Thí dụ

hàm myfunction (x, y) {& nbsp; if (y === không xác định) {& nbsp; & nbsp; & nbsp; y = 2; & nbsp; }}

Hãy tự mình thử »
  let max = -Infinity;
  for (let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}

Hãy tự mình thử »

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

Thí dụ

hàm myfunction (x, y) {& nbsp; if (y === không xác định) {& nbsp; & nbsp; & nbsp; y = 2; & nbsp; }}

Hãy tự mình thử »
  let sum = 0;
  for (let i = 0; i < arguments.length; i++) {
    sum += arguments[i];
  }
  return sum;
}

Hãy tự mình thử »

Giá trị tham số mặc địnhtoo many arguments (more than declared), these arguments can be reached using the arguments object.


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

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

hàm myfunction (x, y = 10) {& nbsp; trả về x + y;} myfunction (5);value: The function only gets to know the values, not the argument's locations.

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

Tham số REST (...) cho phép một hàm xử lý số lượng đối số không xác định như một mảng:


hàm tổng (... args) {& nbsp; Đặt tổng = 0; & nbsp; for (Đặt arg của args) sum += arg; & nbsp; trả về tổng; }

Đặt x = sum (4, 9, 16, 25, 29, 100, 66, 77);

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

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ủa các đối số được sử dụng khi hàm được gọi (được gọi).



Cá nhân tôi không thích chức năng "Pass By tham khảo" được cung cấp bởi các ngôn ngữ lập trình khác nhau. Có lẽ đó là bởi vì tôi chỉ khám phá ra các khái niệm về lập trình chức năng, nhưng tôi luôn bị nổi da gà khi thấy các chức năng gây ra tác dụng phụ (như thao tác các tham số được truyền qua tham chiếu). Cá nhân tôi nắm bắt mạnh mẽ nguyên tắc "trách nhiệm duy nhất".

IMHO, một hàm sẽ trả về chỉ một kết quả/giá trị bằng cách sử dụng từ khóa trả về. Thay vì sửa đổi một tham số/đối số, tôi sẽ trả về giá trị tham số/đối số đã sửa đổi và để lại bất kỳ công việc phân công mong muốn nào lên đến mã gọi.

Nhưng đôi khi (hy vọng rất hiếm khi), cần phải trả về hai hoặc nhiều giá trị kết quả từ cùng một hàm. Trong trường hợp đó, tôi sẽ chọn bao gồm tất cả các giá trị kết quả đó trong một cấu trúc hoặc đối tượng. Một lần nữa, việc xử lý bất kỳ công việc chỉ định lại nên tùy thuộc vào mã gọi.

Example:

Giả sử các tham số truyền sẽ được hỗ trợ bằng cách sử dụng từ khóa đặc biệt như 'ref' trong danh sách đối số. Mã của tôi có thể trông giống như thế này:

//The Function
function doSomething(ref value) {
    value = "Bar";
}

//The Calling Code
var value = "Foo";
doSomething(value);
console.log(value); //Bar

Thay vào đó, tôi thực sự muốn làm một cái gì đó như thế này:

//The Function
function doSomething(value) {
    value = "Bar";
    return value;
}

//The Calling Code:
var value = "Foo";
value = doSomething(value); //Reassignment
console.log(value); //Bar

Khi tôi cần viết một hàm trả về nhiều giá trị, tôi cũng sẽ không sử dụng các tham số được truyền bằng tham chiếu. Vì vậy, tôi sẽ tránh mã như thế này:

//The Function
function doSomething(ref value) {
    value = "Bar";

    //Do other work
    var otherValue = "Something else";

    return otherValue;
}

//The Calling Code
var value = "Foo";
var otherValue = doSomething(value);
console.log(value); //Bar
console.log(otherValue); //Something else

Thay vào đó, tôi thực sự muốn trả về cả hai giá trị mới bên trong một đối tượng, như thế này:

//The Function
function doSomething(value) {
    value = "Bar";

    //Do more work
    var otherValue = "Something else";

    return {
        value: value,
        otherValue: otherValue
    };
}

//The Calling Code:
var value = "Foo";
var result = doSomething(value);
value = result.value; //Reassignment
console.log(value); //Bar
console.log(result.otherValue);

Những ví dụ mã này khá đơn giản, nhưng nó chứng minh cách cá nhân tôi sẽ xử lý những thứ như vậy. Nó giúp tôi giữ các trách nhiệm khác nhau ở đúng nơi.

Mã hóa hạnh phúc. :)

Có cách nào để vượt qua các biến JavaScript trong URL không?

Câu trả lời ngắn gọn là có JavaScript có thể phân tích các giá trị tham số URL.Bạn có thể thực hiện điều này bằng cách tận dụng các tham số URL sang: Truyền các giá trị từ trang này sang trang khác bằng phương thức JavaScript GET.Truyền các giá trị tùy chỉnh cho Google Analytics bằng biến URL của Trình quản lý thẻ Google hoạt động giống như sử dụng chức năng JavaScript.yes Javascript can parse URL parameter values. You can do this by leveraging URL Parameters to: Pass values from one page to another using the Javascript Get Method. Pass custom values to Google Analytics using the Google Tag Manager URL Variable which works the same as using a Javascript function.

Có chức năng vượt qua trong JavaScript không?

1. Truyền các chức năng - Đừng gọi chúng.Bạn có thể viết các chức năng gọi lại hoàn toàn bên trong hàm cần chúng - nhưng để dễ đọc và gỡ lỗi, nó thường giúp khai báo hoặc gán chúng ở nơi khác và tham khảo chúng theo chức năng hoặc tên biến.don't invoke them. You can write callback functions entirely inside the function that needs them — but for ease of readability and debugging it often helps to declare or assign them elsewhere and reference them by function or variable name.