js 的这个语法是个什么东西?

2018-12-13 16:21:54 +08:00
 rizon

今天偶然发现这种写法,还是挺有意思的。

function fun({
                 detail: {
                     value
                 }
             }) {
    console.log(value)
}
fun({detail: {value: "12"}})

不是专门搞 js 的,所以不是很懂,请问这个东西叫什么名字?是个什么概念的什么存在啊?

3934 次点击
所在节点    程序员
25 条回复
ByZHkc3
2018-12-13 16:25:48 +08:00
es6 解构
yokyj
2018-12-13 16:26:42 +08:00
解构
crs0910
2018-12-13 16:42:44 +08:00
还可以改名字,语法比较恶心
```
list = ({ dbs: { master: client, slave: server } }) => console.table({client, server})
list({ dbs: { master: 'A', slave: 'B' } })
```
TomVista
2018-12-13 16:47:00 +08:00
等于 function(value){console.log(value)}
zealot0630
2018-12-13 16:52:49 +08:00
学 erlang,scala 的语法,

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

const [A,B,...C] = [1,2,3] // A=1 B=2 C=[3]

import {A,B,C} from 'library'

const {A,B,...C} = {A:1, B:2, C:3, D:4} // A=1,B=2,C={C:3,D:4}

...的用法还在 proposal
chanchan
2018-12-13 16:57:49 +08:00
十天设计出来的语言 了解一下
learnshare
2018-12-13 16:58:49 +08:00
这部分有些奇怪,读起来也不直观,然后每个人都有自己的写法
TomVista
2018-12-13 16:59:48 +08:00
@ByZHkc3 @crs0910 @rizon @yokyj @zealot0630 话说我感觉 js 中很多奇奇怪怪的语法,完全是给程序员添乱啊...这个解构肯定算一个.

你们认为 es2016 es2017 中的这些东西是否违背了代码的可读性?
mytry
2018-12-13 17:01:47 +08:00
现在还可以 console.log(1,2,) 了。。。
crs0910
2018-12-13 17:06:50 +08:00
数组除了自己的解构方式,还可以用 Object 的解构。据说速度快一点。
crs0910
2018-12-13 17:08:22 +08:00
@TomVista #8 我觉得很好用啊。唯一不好的是深层次的解构和重命名一起用的时候有点难读。
crs0910
2018-12-13 17:09:45 +08:00
@crs0910 #11 我有时候会写错写成 as
tangym
2018-12-13 17:12:08 +08:00
一切皆对象,es 解构
tangym
2018-12-13 17:13:44 +08:00
推荐看这个: http://es6.ruanyifeng.com/
wu67
2018-12-13 17:26:43 +08:00
很多东西只是符合语法, 但是实际上你这么写, 会被同事打死的
mooncakejs
2018-12-13 17:28:31 +08:00
在用 typescript 前,解构基本用来当命名参数用,怎么会被打死。
geying
2018-12-13 21:44:22 +08:00
还是没看懂,手机上这个缩进……
是不是和 swift 一个参数量有两个名字
royzxq
2018-12-13 21:50:13 +08:00
es6 解构,挺好用的。
plqws
2018-12-13 21:54:47 +08:00
解构其实有很大的作用就是可以给函数定义具名参数,滥用的话才容易出问题
azh7138m
2018-12-13 23:49:24 +08:00
@TomVista 显然不会,这些语法都是来自于其他语言的(

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/517266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX