Chuyển tới nội dung
Trang chủ » Double Question Mark Javascript: Unleashing The Power Of ?? Operator

Double Question Mark Javascript: Unleashing The Power Of ?? Operator

Nullish Coalescing Operator - JavaScript Tutorial

Double Question Mark Javascript

Double question mark in JavaScript, also known as the nullish coalescing operator, is a relatively new addition to the language that provides a convenient way to handle default values for variables. It was introduced in ECMAScript 2020, and since then, it has gained popularity among JavaScript developers for its simplicity and effectiveness.

## What is the double question mark in JavaScript?

The double question mark operator, denoted as `??`, is used to provide a default value when a given expression evaluates to `null` or `undefined`. It can be thought of as a shorthand for checking if a value exists and, if not, assigning a default value.

## How does the double question mark work?

The double question mark operator behaves differently than the logical OR operator (`||`) when handling falsy values such as `0`, `false`, `NaN`, or an empty string `””`. The logical OR operator would consider these values as falsy and would assign the default value, whereas the double question mark operator only assigns the default value if the expression is `null` or `undefined`.

For example:

“`javascript
const undefinedValue = undefined;
const nullValue = null;
const zeroValue = 0;

console.log(undefinedValue ?? ‘Default’); // Output: ‘Default’
console.log(nullValue ?? ‘Default’); // Output: ‘Default’
console.log(zeroValue ?? ‘Default’); // Output: 0
“`

In the above example, the double question mark operator provides the default value `’Default’` only when the variable is `null` or `undefined`. In the case of `zeroValue`, the operator does not assign the default value because `0` is not considered `null` or `undefined`.

## Understanding nullish coalescing in JavaScript

Nullish coalescing is a concept that deals with handling null or undefined values in JavaScript. The double question mark operator plays a significant role in nullish coalescing by providing a concise syntax for assigning default values.

Prior to the introduction of the double question mark operator, developers often used the logical OR operator (`||`) to assign default values. However, the logical OR operator was unable to distinguish between falsy values and null or undefined values, leading to potential bugs or unexpected behavior. With the double question mark operator, developers can now handle falsy values more accurately.

## Using the double question mark operator for providing default values

One common use case of the double question mark operator is providing default values for variables when they are null or undefined. Instead of writing lengthy if-else statements, the operator allows developers to handle default values in a concise and readable manner.

“`javascript
const myVariable = null;
const defaultValue = myVariable ?? ‘Default’;

console.log(defaultValue); // Output: ‘Default’
“`

In the above example, if `myVariable` is null or undefined, the operator assigns the default value `’Default’` to the `defaultValue` variable.

## Differences between the double question mark and the logical OR operator

While both the double question mark and the logical OR operator can be used to assign default values, they have a fundamental difference in their behavior.

The logical OR operator (`||`) assigns the default value when the variable is falsy, whereas the double question mark operator (`??`) assigns the default value only when the variable is `null` or `undefined`.

For example:

“`javascript
const falseValue = false;
const emptyString = ”;

console.log(falseValue || ‘Default’); // Output: ‘Default’
console.log(emptyString || ‘Default’); // Output: ‘Default’

console.log(falseValue ?? ‘Default’); // Output: false
console.log(emptyString ?? ‘Default’); // Output: ”
“`

In the above example, the logical OR operator assigns the default value in both cases since `falseValue` and `emptyString` are falsy values. However, the double question mark operator retains the original value of the variable.

## Handling falsy values with the double question mark operator

The double question mark operator can be used to handle falsy values in JavaScript effectively. Unlike the logical OR operator, it treats falsy values as non-null and non-undefined values. Therefore, it does not assign the default value to variables with falsy values.

“`javascript
const zeroValue = 0;
const emptyString = ”;

console.log(zeroValue ?? ‘Default’); // Output: 0
console.log(emptyString ?? ‘Default’); // Output: ”
“`

In the above example, the double question mark operator does not assign the default value to `zeroValue` and `emptyString` because they are not `null` or `undefined` values.

## Best practices for using the double question mark operator

When using the double question mark operator, it is important to follow some best practices to ensure code readability and maintainability:

1. Use the double question mark operator when explicitly checking for `null` or `undefined` values. For other falsy values, consider using the logical OR operator.
2. Avoid chaining multiple double question mark operators in a single expression as it may reduce code clarity. It is best to use separate assignments or conditional statements for better readability.
3. Provide meaningful default values that accurately reflect the intent of the variable. This helps in understanding the code’s behavior and purpose.

By following these best practices, developers can effectively use the double question mark operator and improve the overall quality of their code.

## Compatibility and support for the double question mark operator in different JavaScript environments

The double question mark operator was introduced in ECMAScript 2020, which means it may not be fully supported in all JavaScript environments. As of now, most modern browsers and Node.js versions support the operator. However, older browsers or outdated versions of JavaScript may not have support for it.

To ensure backward compatibility, it is recommended to use transpilers such as Babel to convert the code that includes the double question mark operator into older versions of JavaScript that do not support it.

Overall, the double question mark operator is a powerful addition to the JavaScript language, offering a concise and effective way to handle default values. With proper usage and understanding, it can significantly improve code readability and maintainability while reducing potential bugs or unexpected behavior.

## FAQs

**Q: What is the double question mark operator in JavaScript?**
A: The double question mark operator, denoted as `??`, is a JavaScript operator introduced in ECMAScript 2020. It is used to provide a default value when a given expression evaluates to `null` or `undefined`.

**Q: How does the double question mark operator work?**
A: The double question mark operator assigns a default value only when the expression is `null` or `undefined`. It behaves differently than the logical OR operator (`||`) when it comes to handling falsy values.

**Q: Can the double question mark operator handle falsy values?**
A: Yes, the double question mark operator can handle falsy values. However, it treats falsy values other than `null` or `undefined` as non-null and non-undefined values, and thus does not assign the default value.

**Q: What are the best practices for using the double question mark operator?**
A: Some best practices for using the double question mark operator include:
– Using it when explicitly checking for `null` or `undefined` values
– Avoiding chaining multiple operators in a single expression
– Providing meaningful default values

**Q: Is the double question mark operator supported in all JavaScript environments?**
A: The double question mark operator is not fully supported in all JavaScript environments. While most modern browsers and Node.js versions have support for it, older browsers or outdated JavaScript versions may not. Transpilers like Babel can be used to ensure backward compatibility.

Nullish Coalescing Operator – Javascript Tutorial

What Does Double Question Mark Mean In Javascript?

What Does Double Question Mark Mean in JavaScript?

JavaScript, the popular programming language predominantly used for front-end web development, constantly introduces new features and syntax enhancements to improve developer productivity and code readability. One such addition is the double question mark (??) operator, which is often referred to as the “nullish coalescing operator.” This operator plays a significant role in handling variable assignment and conditional statements, allowing for more efficient and concise code. In this article, we delve into the intricacies of the double question mark operator, exploring its purpose, functionality, and usage in JavaScript.

Understanding the Purpose and Functionality of Double Question Mark Operator:

In JavaScript, developers frequently encounter scenarios where a variable may have a null or undefined value. In such cases, it becomes essential to assign a default value to the variable or perform a certain operation if the value is nullish. Before the introduction of the double question mark operator, developers typically relied on the logical OR operator (||) to accomplish this. However, the logical OR operator can be problematic as it considers falsy values like 0, empty strings, and NaN as nullish values, resulting in undesired outcomes.

The double question mark operator resolves this issue by exclusively identifying and handling nullish values. It checks if the value on the left-hand side of the operator is nullish (either null or undefined). If it is nullish, the operator returns the value on the right-hand side. Conversely, if the value on the left-hand side is not nullish, the operator returns the value on the left-hand side. This way, the double question mark operator avoids treating falsy values, such as 0, as nullish, providing more accurate default assignment or conditional decision-making.

Usage of Double Question Mark Operator in JavaScript:

The basic syntax of using the double question mark operator is as follows:

“`javascript
const result = variableToCheck ?? defaultValue;
“`

Here, `variableToCheck` represents the variable that needs to be evaluated for nullish value, and `defaultValue` is the value that will be assigned if `variableToCheck` is nullish.

Example 1: Assigning Default Value:

“`javascript
const name = null;
const defaultName = “John Doe”;
const result = name ?? defaultName;

console.log(result); // Output: John Doe
“`

In the above example, the `name` variable is null, so the double question mark operator assigns the default value, “John Doe,” to the `result` variable.

Example 2: Conditional Statement:

“`javascript
const value = undefined;

if (value ?? false) {
console.log(“The value exists.”);
} else {
console.log(“The value does not exist.”);
}
“`

In this case, the `value` variable is undefined, which is considered nullish. Therefore, the condition evaluates to false, resulting in the output “The value does not exist.”

Frequently Asked Questions (FAQs):

Q1. Can the double question mark operator be used with other logical operators?
Yes, the double question mark operator can be combined with logical operators such as OR (||) and AND (&&) to create more complex conditions. However, it is crucial to understand the operator precedence and utilize parentheses when necessary to avoid unexpected behavior.

Q2. What is the difference between the double question mark operator (??) and the logical OR operator (||)?
The significant difference between the double question mark operator and the logical OR operator is their treatment of falsy values. The double question mark operator only considers null and undefined as nullish values, whereas the logical OR operator treats additional falsy values as nullish. Using the double question mark operator helps eliminate undesired outcomes when handling default values.

Q3. Is the double question mark operator supported by all modern browsers?
Yes, the double question mark operator is an ECMAScript feature introduced in JavaScript version ES2020. Most modern browsers support this operator, but older browsers may not. It is advisable to use a transpiler like Babel to convert code using the double question mark operator to a compatible syntax for wider browser compatibility.

Q4. Can the double question mark operator be used for nested nullish checks?
Yes, the double question mark operator can be chained in a series of nested checks, allowing for a concise and readable way of assigning defaults or checking for nullish values in complex scenarios.

In conclusion, the double question mark operator offers a convenient and efficient approach to assign default values or evaluate nullish data in JavaScript. By explicitly considering only null and undefined as nullish values, it eliminates the possibility of unexpected behavior caused by falsy values being treated as nullish. This operator greatly enhances code readability and reduces the need for lengthy conditional statements, thus contributing to more maintainable JavaScript code.

What Does 2 Question Marks Mean In Typescript?

What does 2 question marks mean in TypeScript?

In TypeScript, the double question mark operator, also known as the nullish coalescing operator, is used to provide a default value for a variable when it is null or undefined. This operator helps to simplify code and handle cases where a value may be missing. Let’s dive deeper into how it works and explore some common use cases.

How does the double question mark operator work?

The syntax of the double question mark operator is as follows: `variableName ?? defaultValue`. It checks if the variable is null or undefined, and if it is, it assigns the defaultValue to the variable.

Here’s an example to illustrate its usage:

“`typescript
let a = null;
let b = a ?? “Default value”;

console.log(b); // Output: “Default value”
“`

In the above example, the variable `b` is assigned the defaultValue (“Default value”) because the variable `a` is null.

This operator is specifically designed not to consider “falsy” values like an empty string, 0, NaN, or false. It only works with null and undefined values.

Common Use Cases

1. Assigning default values:
The primary use of the double question mark operator is to provide default values when a variable is null or undefined. It helps to handle cases where you don’t want the program to crash or behave unexpectedly due to missing values.

“`typescript
let username = null;
let displayName = username ?? “Guest”;

console.log(displayName); // Output: “Guest”
“`

In this example, if the username is null, the variable displayName will be set to “Guest”.

2. Function parameters:
The double question mark operator can also be used with function parameters to set default values. This allows you to call a function without explicitly passing a value for that parameter. If the parameter is not provided, the default value will be used instead.

“`typescript
function greet(name: string | undefined): void {
name = name ?? “User”;
console.log(`Hello, ${name}!`);
}

greet(); // Output: “Hello, User!”
“`

In the above example, if the name parameter is not provided, it defaults to “User”.

3. Chaining the operator:
You can chain the double question mark operator to provide multiple fallback values. If the first value is null or undefined, it moves to the next one. This allows for a more flexible approach to handle missing values.

“`typescript
let a = null;
let b = undefined;
let c = “Value”;

let result = a ?? b ?? c;

console.log(result); // Output: “Value”
“`

In this example, since both a and b are null or undefined, the variable c is assigned to the result.

Frequently Asked Questions (FAQs):

Q1: How is the double question mark operator different from the OR operator (||)?
The OR operator evaluates truthy values, so if the value is empty, 0, or false, it will evaluate to false. On the other hand, the double question mark operator specifically checks for null or undefined values.

Q2: Can the double question mark operator be used with objects?
No, the double question mark operator does not work with objects. It only applies to variables that can be null or undefined.

Q3: Can I use the double question mark operator in JavaScript?
No, the double question mark operator is a TypeScript-specific operator and is not available in JavaScript.

Q4: Is there a limit to how many times I can chain the double question mark operator?
No, you can chain the operator as many times as needed to provide fallback values. However, it is important to ensure the readability and maintainability of your code.

In conclusion, the double question mark operator in TypeScript is a valuable tool for handling null and undefined values. It simplifies code and allows for easier assignment of default values. By understanding its usage and common scenarios, you can handle missing values more efficiently in your TypeScript projects.

Keywords searched by users: double question mark javascript Double question mark js, Nullish js, Ternary operator js, javascript … operator three dots, Double question mark equals javascript, Double exclamation mark js, Optional chaining, Nullish coalescing operator

Categories: Top 34 Double Question Mark Javascript

See more here: nhanvietluanvan.com

Double Question Mark Js

Double question mark JS, also known as the nullish coalescing operator (??), is a relatively new feature introduced in JavaScript. It offers a concise and elegant way to handle nullable values, making the code more readable and efficient. In this article, we will delve into the details of this operator, exploring its syntax, practical applications, and potential pitfalls.

Named the “nullish coalescing operator,” the double question mark (??) is used to provide a default value when dealing with null or undefined values. This operator essentially evaluates the left-hand side expression and, only if it is null or undefined, returns the right-hand side expression. Otherwise, it returns the left-hand side expression as the result.

The syntax for the double question mark operator is straightforward. It is composed of two consecutive question marks (??) enclosed between two expressions. The left-hand side expression represents the value to be evaluated, while the right-hand side expression represents the default value to be returned if the left-hand side expression is null or undefined.

Let’s examine a simple example to understand the behavior of the double question mark operator in practice:

“`javascript
const foo = null;
const bar = foo ?? “default”;
console.log(bar); // Output: “default”
“`

In the above example, the variable `foo` is assigned a null value. When the double question mark operator is applied, it identifies `foo` as null and returns the default value, “default.” Subsequently, the console.log statement prints out “default”.

One distinctive advantage of using the double question mark operator is that it explicitly checks for nullish values, unlike the logical OR operator (||) which includes falsy values such as empty strings, 0, and false. The double question mark operator, on the other hand, focuses on null or undefined values only.

Another compelling use case for the double question mark operator is property access with optional chaining. By combining the double question mark operator with the optional chaining operator (?.), developers can efficiently handle situations where an object property potentially does not exist.

“`javascript
const person = {
name: “Alice”,
age: 30,
};

const email = person.email ?? “No email provided.”;
console.log(email); // Output: “No email provided.”
“`

In this example, we attempt to access the `email` property of the `person` object. However, since the `email` property is undefined, the double question mark operator detects this and returns the default value, “No email provided.”

FAQs:

Q: Can the double question mark operator be used in if statements?
A: Yes, the double question mark operator can be used in if statements. It allows for concise and readable code to handle null or undefined values.

Q: Does the double question mark operator work for all falsy values?
A: No, the double question mark operator only considers null and undefined as nullish values, unlike the logical OR operator (||) which acts upon all falsy values.

Q: Is it possible to chain multiple double question mark operators?
A: Yes, multiple double question mark operators can be chained together. However, keep in mind that each expression will be evaluated one after another until a non-nullish value is encountered.

Q: Can I use the double question mark operator in older versions of JavaScript?
A: No, the double question mark operator was introduced in ECMAScript 2020. It will not work in older versions of JavaScript.

Q: Are there any performance considerations when using the double question mark operator?
A: The double question mark operator has similar performance to the logical OR operator (||). However, readability and code maintenance should be prioritized over micro-optimizations in most cases.

In conclusion, the double question mark JS operator brings notable improvements to JavaScript, simplifying the handling of null or undefined values. By providing a concise and intuitive syntax, it enhances code readability and reduces the potential for errors. Leveraging this operator, developers can write clearer and more robust code, resulting in more efficient applications.

Nullish Js

Nullish JS: A Comprehensive Guide to the Nullish Coalescing Operator in JavaScript

JavaScript, being one of the most widely used programming languages, continuously evolves with new features and upgrades. Developers often encounter situations where they need to check for null or undefined values and assign default values if needed. In such cases, the nullish coalescing operator in JavaScript, commonly referred to as Nullish JS, proves to be an invaluable tool. In this article, we’ll dive deep into the usage and benefits of Nullish JS, exploring its syntax, examples, and best practices.

Understanding Nullish JS:

Nullish JS is an operator introduced in ECMAScript 2020 to provide a concise and reliable way of assigning default values when dealing with null or undefined values. Prior to Nullish JS, developers primarily used the logical OR operator (||) to achieve the same result. However, the logical OR operator has a crucial drawback when it comes to reassigning default values for falsy values like 0, an empty string, or false, as they are also considered “false” by the logical OR operator.

The syntax of the nullish coalescing operator is simple and intuitive:

“`javascript
let result = value1 ?? value2;
“`

In the above syntax, if `value1` is null or undefined, `result` will be assigned the value of `value2`. Otherwise, `result` will be assigned the value of `value1`. This behavior ensures that only null or undefined values are considered falsy, while other falsy values preserve their intended meaning.

Example Usages:
Let’s explore some practical examples to showcase the power and usefulness of Nullish JS:

1. Providing Default Values:
“`javascript
const name = null;
const defaultName = “John Doe”;

const username = name ?? defaultName;
console.log(username); // Output: “John Doe”
“`
In the above example, if the `name` variable is null or undefined, the `username` variable is assigned the default value of “John Doe”.

2. Assigning Empty String as Default:
“`javascript
const input = “”;
const defaultValue = “Default Value”;

const value = input ?? defaultValue;
console.log(value); // Output: “”
“`
Here, even though the `input` variable is an empty string, it is not considered a null or undefined value. Hence, `value` is assigned the empty string itself, retaining its original value.

3. Handling Undefined Values:
“`javascript
let x; // x is undefined

const y = x ?? “Default Value”;
console.log(y); // Output: “Default Value”
“`
In this case, since the variable `x` is undefined, Nullish JS assigns the value “Default Value” to the variable `y`.

4. Complex Expressions:
Nullish JS can be combined with other operators and expressions to achieve more complex results. For instance:
“`javascript
const myObject = {
complexValue: 0,
};

const result = myObject.complexValue ?? 42;
console.log(result); // Output: 0
“`
In this example, the `myObject.complexValue` is 0, which is a falsy value. However, since Nullish JS only considers null or undefined as falsy, the result remains 0.

Best Practices:
When using Nullish JS, keeping a few best practices in mind will help you write cleaner and more maintainable code:

1. Use Nullish JS for ensuring default values specifically for null or undefined, and logical OR (||) for general truthy or falsy checks.

2. Avoid using Nullish JS on non-nullable values. Nullish JS is intended to handle null or undefined values, and using it for non-nullable values confuses the behavior and can lead to unintended consequences.

3. Leverage Nullish JS with optional chaining (?.) to streamline your code by checking for null or undefined values and accessing nested properties in a single line.

FAQs:

Q: Can Nullish JS be used with non-boolean values?
A: Yes, Nullish JS can be used with any type of value. It will assign the default value only if the variable is null or undefined.

Q: How is Nullish JS different from the logical OR (||) operator?
A: The logical OR operator considers null, undefined, 0, empty string, false, NaN, and the empty array as falsy values, whereas Nullish JS only treats null and undefined as falsy.

Q: Is Nullish JS compatible with older versions of JavaScript?
A: No, Nullish JS was introduced in ECMAScript 2020 and is not supported in older versions of JavaScript. Make sure your environment supports ECMAScript 2020 or newer.

Q: Are there any performance considerations when using Nullish JS?
A: In terms of performance, Nullish JS is generally comparable to the logical OR operator. However, it’s a good practice to avoid unnecessary complex expressions when using Nullish JS to ensure optimal performance.

Conclusion:

Nullish JS, the nullish coalescing operator in JavaScript, enables developers to handle null or undefined values more effectively while ensuring the integrity of other falsy values. By providing a concise and reliable way to assign default values, Nullish JS simplifies code and enhances readability. As JavaScript continues to evolve, adopting Nullish JS as a part of your coding toolkit will undoubtedly prove to be a valuable asset in your development journey.

Images related to the topic double question mark javascript

Nullish Coalescing Operator - JavaScript Tutorial
Nullish Coalescing Operator – JavaScript Tutorial

Found 42 images related to double question mark javascript theme

How The Question Mark (?) Operator Works In Javascript
How The Question Mark (?) Operator Works In Javascript
The 10 Most Common Javascript Issues Developers Face | Toptal®
The 10 Most Common Javascript Issues Developers Face | Toptal®
Top 80+ Javascript Interview Questions And Answers For 2023 [Updated]
Top 80+ Javascript Interview Questions And Answers For 2023 [Updated]
Javascript Cheat Sheet: Basics To Advanced(2023) - Interviewbit
Javascript Cheat Sheet: Basics To Advanced(2023) – Interviewbit
Learning Javascript Double Question Mark (??) Or The Nullish Coalescing  Operator | Sebhastian
Learning Javascript Double Question Mark (??) Or The Nullish Coalescing Operator | Sebhastian
Javascript Cheat Sheet: Basics To Advanced(2023) - Interviewbit
Javascript Cheat Sheet: Basics To Advanced(2023) – Interviewbit
How The Question Mark (?) Operator Works In Javascript
How The Question Mark (?) Operator Works In Javascript
Understanding The Exclamation Mark In Typescript - Logrocket Blog
Understanding The Exclamation Mark In Typescript – Logrocket Blog
Javascript - Wikipedia
Javascript – Wikipedia
Truthy And Falsy Values: When All Is Not Equal In Javascript — Sitepoint
Truthy And Falsy Values: When All Is Not Equal In Javascript — Sitepoint
Single Vs. Double Quotation Marks Explained | Grammarly
Single Vs. Double Quotation Marks Explained | Grammarly
British Ecological Society On Twitter:
British Ecological Society On Twitter: “How Can We Avoid Conscious And Unconscious Bias In The Peer Review Process? A 3-Year Randomised Trial In @Functionalecology Suggests Double-Anonymous Peer Reviewing Reduces Reviewer Bias Towards
Nullish Coalescing Operator (??) - Javascript | Mdn
Nullish Coalescing Operator (??) – Javascript | Mdn
What Is The Typeof Operator: Examples, Usecase & More | Simplilearn
What Is The Typeof Operator: Examples, Usecase & More | Simplilearn
Page 32 | Interroge Images - Free Download On Freepik
Page 32 | Interroge Images – Free Download On Freepik
Strings Single Double Quotes In Javascript Demo - Youtube
Strings Single Double Quotes In Javascript Demo – Youtube
Javascript - When Should I Use ?? (Nullish Coalescing) Vs || (Logical Or)?  - Stack Overflow
Javascript – When Should I Use ?? (Nullish Coalescing) Vs || (Logical Or)? – Stack Overflow
Quick Tip: How To Use The Ternary Operator In Javascript — Sitepoint
Quick Tip: How To Use The Ternary Operator In Javascript — Sitepoint
Javascript Interview Questions And Answers (2023) - Interviewbit
Javascript Interview Questions And Answers (2023) – Interviewbit
What Does Javascript:Void(0) Mean? - Geeksforgeeks
What Does Javascript:Void(0) Mean? – Geeksforgeeks
Top 50 Javascript Interview Questions And Answers In 2023
Top 50 Javascript Interview Questions And Answers In 2023
Add Javascript
Add Javascript
What Is Javascript? - Learn Web Development | Mdn
What Is Javascript? – Learn Web Development | Mdn
Pause Your Code With Breakpoints - Chrome Developers
Pause Your Code With Breakpoints – Chrome Developers
Javascript: The Definitive Guide: Master The World'S Most-Used Programming  Language: Flanagan, David: 9781491952023: Amazon.Com: Books
Javascript: The Definitive Guide: Master The World’S Most-Used Programming Language: Flanagan, David: 9781491952023: Amazon.Com: Books
The
The “Checkbox Hack” (And Things You Can Do With It) | Css-Tricks – Css-Tricks
Javascript Variable With Question Mark
Javascript Variable With Question Mark
Regular Expression - Wikipedia
Regular Expression – Wikipedia
Preferences | Nitro
Preferences | Nitro

Article link: double question mark javascript.

Learn more about the topic double question mark javascript.

See more: nhanvietluanvan.com/luat-hoc

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *