In es6, destructuring refers to the act of extracting values from arrays and objects according to a certain pattern and assigning values to variables; common ones include object structure, array destructuring and mixed destructuring, which is a kind of data destructuring. The process of breaking down a structure into smaller parts to simplify the extraction of information.
The operating environment of this tutorial: Windows 10 system, ECMAScript version 6.0, Dell G3 computer.
What does destructuring mean in es6
destructuring: Baidu Encyclopedia means structural decomposition. ES6 allows extracting values from arrays and objects and assigning values to variables according to certain patterns. This is It's called destructuring.
The more common ones in development include object destructuring, array destructuring, and mixed destructuring. This is a process of breaking down a data structure into smaller parts to simplify the extraction of information.
Object destructuring
Traditional method to obtain the value in the object
let node = { type: 'Identifier', name: 'foo' } console.log(node.type) // Identifier console.log(node.foo) // foo
Use destructuring
let node = { type: 'Identifier', name: 'foo' } let { type, name } = node console.log(type) // Identifier console.log(name) // foo
If If the specified local variable name does not exist in the object, then the local variable will be assigned the value undefined
let { type, name, value } = node console.log(type) // Identifier console.log(name) // foo console.log(value) // undefined
When the specified attribute does not exist, you can define any default value for the non-existing attribute
let { type, name, value = true } = node console.log(type) // Identifier console.log(name) // foo console.log(value) // true
Specify a new variable name for destructuring assignment
let arr = { six: '男', age: 19 } let {six:newSix, age:newAge} = arr console.log(six, age) // six is not defined console.log(newSix, newAge) // 男 19
Look at the above and see if it seems strange. Traditional object assignments have four attributes on the left and values on the right. But in destructuring, the right side is the attribute and the left side is the value, so the new variable name is on the right side.
If you use let, var, or const to destructure an object, the value of the destructured object must not exist.
When var, let, and const assignments are not used, the destructuring statement needs to be wrapped with ()
({type, name} = node); //{} is used as code in js Block, if you use the equal sign alone, an error will be reported.
Destructuring of nested objects
Destructuring in nested objects, we will continue to use curly braces in the first level of destructuring to go deeper. Search in one layer; let’s look at a chestnut first:
let node = { type: "Identifier", name: "foo", loc: { start: { line: 1, column: 1 }, end: { line: 1, column: 4 } } }
The above is a nested object node, let’s deconstruct the first layer
let { loc, type, name } = node // {} Identifier foo
You can see that we deliberately disrupted {} In the order of the attributes, the result is still output correctly, so you can guess that the specific corresponding method should be based on the name, and has nothing to do with the order.
Continue to deconstruct the second layer
let { loc: { start }} = node; console.log(start.line); // 1 console.log(start.column); // 4
Here we can also assign start to a new custom local variable, assuming we assign it to newStart
let { loc: { start: newStart }} = node console.log(newStart.line) // 1 console.log(newStart.column) // 4
The summary is as follows :
All identifiers before the colon represent the retrieval position in the object, and the right side is the variable name to be assigned; if there are curly braces after the colon, it means that the final value to be assigned is nested in deeper levels within the object.
Array destructuring
Array destructuring uses array literals, and all destructuring operations are completed within the array, and array destructuring does not need to be used like object literal syntax Named properties of the object.
let colors = [ 'red', 'green', 'blue' ] let [ firstColor, secondColor ] = colors console.log(firstColor) // 'red' console.log(secondColor) // 'green'
In the array destructuring syntax, we mainly select the value based on its position in the array, and can store it in any variable. Elements that are not explicitly declared will be directly ignored.
let [ , , thirdColor ] = colors console.log(thirdColor) // 'blue'
Variable exchange of array destructuring
In traditional ES5, swapping values generally requires the introduction of a third temporary variable as a transfer, but if you use the array destructuring assignment syntax, there is no need to add additional variables. .
// ES5中互换值: let a = 1, b = 2, tmp; tmp = a a = b b = tmp console.log(a, b) // 2, 1 // ES6中互换值 let a = 1, b = 2; [ a, b ] = [b, a] console.log(a, b) // 2, 1
Nested data destructuring
let colors = [ 'red', [ 'green', 'lightgreen'], 'blue' ] let [ firstColor, [ secondColor, thirdColor ], fourthColor ] = colors console.log(firstColor) // red console.log(secondColor) // green console.log(thirdColor) // lightgreen console.log(fourthColor) // blue
Default value
You can also add a default value for any position in the array in the array destructuring assignment expression. When the attribute at the specified position When it does not exist or its value is undefined, the default value is used
let colors = [ 'red' ] let [ firstColor, secondColor = 'green' ] = colors console.log(firstColor) // red console.log(secondColor) // green
Indefinite element
...It is an expansion operator. We should all know its purpose. It can be used to expand the array when operating an array. into a string. In array destructuring, the remaining elements in the array can be assigned to a specific variable using the... syntax.
let colors = [ 'red', 'green', 'blue' ] let [ firstColor, ...restColors ] = colors console.log(firstColosr) // 'red' console.log(restColors.length); // 2 console.log(restColors[0]); // "green" console.log(restColors[1]); // "blue"
Array copy
In ES5, developers often use the concat() method to clone arrays
var colors = [ "red", "green", "blue" ]; var clonedColors = colors.concat(); console.log(clonedColors); //"[red,green,blue]"
The concat() method was originally designed to connect two arrays , if no parameters are passed when calling, a copy of the current function will be returned.
In ES6, the same goal can be achieved through the syntax of indefinite elements
let colors = [ "red", "green", "blue" ]; let [ ...clonedColors ] = colors; console.log(clonedColors); //"[red,green,blue]"
In the destructured array, indefinite The element must be the last entry. Adding commas after it will cause the program to throw a syntax error.
Mixed deconstruction
let err = { errors: [ { msg: 'this is a message' }, { title: 'this is a title' } ] }
In the above code, the err object contains errors, and errors is an array and contains new objects. Extract msg in the object. We can dismantle the above chestnut step by step and deconstruct it:
let { errors } = err let [ firstArr ] = errors let { msg } = firstArr console.log(msg) // 'this is a message' 也可以这样解构 let [ , { title }] = err.errors console.log(title) // 'this is a title' let [{ msg }] = err.errors console.log(msg) // 'this is a message'
Let’s look at a more complicated one. In fact, as long as you can find the order, this is still very simple to understand.
let node = { type: "Identifier", loc: { start: { line: 1, column: 1 } }, range: [0, 3] }; let { loc: { start }, range: [ startIndex ] } = node; console.log(start.line); // 1 console.log(start.column); // 1 console.log(startIndex); // 0
Actual use - parameter deconstruction
is generally used when encapsulating function parameters, as shown below:
// options 上的属性表示附加参数 function setCookie(name, value, options) { options = options || {}; let secure = options.secure, path = options.path, domain = options.domain, expires = options.expires; // 设置 cookie 的代码 } //可以改写为:对options进行解构并赋予默认值 function setCookie(name, value, { secure, path, domain, expires } = {}) { // ... }
[Related recommendations: javascript video tutorial 、webfrontend】
The above is the detailed content of What does deconstruction in es6 mean?. For more information, please follow other related articles on the PHP Chinese website!

The advantages of React are its flexibility and efficiency, which are reflected in: 1) Component-based design improves code reusability; 2) Virtual DOM technology optimizes performance, especially when handling large amounts of data updates; 3) The rich ecosystem provides a large number of third-party libraries and tools. By understanding how React works and uses examples, you can master its core concepts and best practices to build an efficient, maintainable user interface.

React is a JavaScript library for building user interfaces, suitable for large and complex applications. 1. The core of React is componentization and virtual DOM, which improves UI rendering performance. 2. Compared with Vue, React is more flexible but has a steep learning curve, which is suitable for large projects. 3. Compared with Angular, React is lighter, dependent on the community ecology, and suitable for projects that require flexibility.

React operates in HTML via virtual DOM. 1) React uses JSX syntax to write HTML-like structures. 2) Virtual DOM management UI update, efficient rendering through Diffing algorithm. 3) Use ReactDOM.render() to render the component to the real DOM. 4) Optimization and best practices include using React.memo and component splitting to improve performance and maintainability.

React is widely used in e-commerce, social media and data visualization. 1) E-commerce platforms use React to build shopping cart components, use useState to manage state, onClick to process events, and map function to render lists. 2) Social media applications interact with the API through useEffect to display dynamic content. 3) Data visualization uses react-chartjs-2 library to render charts, and component design is easy to embed applications.

Best practices for React front-end architecture include: 1. Component design and reuse: design a single responsibility, easy to understand and test components to achieve high reuse. 2. State management: Use useState, useReducer, ContextAPI or Redux/MobX to manage state to avoid excessive complexity. 3. Performance optimization: Optimize performance through React.memo, useCallback, useMemo and other methods to find the balance point. 4. Code organization and modularity: Organize code according to functional modules to improve manageability and maintainability. 5. Testing and Quality Assurance: Testing with Jest and ReactTestingLibrary to ensure the quality and reliability of the code

To integrate React into HTML, follow these steps: 1. Introduce React and ReactDOM in HTML files. 2. Define a React component. 3. Render the component into HTML elements using ReactDOM. Through these steps, static HTML pages can be transformed into dynamic, interactive experiences.

React’s popularity includes its performance optimization, component reuse and a rich ecosystem. 1. Performance optimization achieves efficient updates through virtual DOM and diffing mechanisms. 2. Component Reuse Reduces duplicate code by reusable components. 3. Rich ecosystem and one-way data flow enhance the development experience.

React is the tool of choice for building dynamic and interactive user interfaces. 1) Componentization and JSX make UI splitting and reusing simple. 2) State management is implemented through the useState hook to trigger UI updates. 3) The event processing mechanism responds to user interaction and improves user experience.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

MinGW - Minimalist GNU for Windows
This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

SublimeText3 Chinese version
Chinese version, very easy to use

SublimeText3 Mac version
God-level code editing software (SublimeText3)