jjzjj

destructuring

全部标签

javascript - 解构对象参数,还要引用参数作为对象?

这个问题在这里已经有了答案:ES6destructuringfunctionparameter-namingrootobject(5个答案)关闭4年前。使用ES6,您可以在函数参数中解构对象:({name,value})=>{console.log(name,value)}等效的ES5是:function(params){console.log(params.name,params.value)}但是如果我想同时引用params对象和嵌套属性value和name怎么办?这是我得到的最接近的,但缺点是它不能与箭头函数一起使用,因为它们无法访问arguments对象:function({n

javascript - 为什么在使用分号时此 JavaScript 不被解释为代码块?

在Chrome版本^72中,如果我运行以下JavaScript则没有错误。{prop:p}={prop:'prop'}>>{prop:'prop'}所以这行代码被解释为表达式语句,出乎意料。但如果我运行相同的代码并在末尾添加分号,它会按预期运行。{prop:p}={prop:'prop'};>>UncaughtSyntaxError:Unexpectedtoken=这是预期的,因为初始的{告诉JavaScript引擎它是一个代码块,除非我们用括号消除歧义。为什么会出现分号而不是没有分号? 最佳答案 Whydoesthisoccurw

JavaScript ES6 : use case for destructuring rest parameter

我刚刚在MDN中看到一个关于解构其余参数的代码片段,如下所示:functionf(...[a,b,c]){returna+b+c;}f(1)//NaN(bandcareundefined)f(1,2,3)//6f(1,2,3,4)//6(thefourthparameterisnotdestructured)代码片段在此页面中:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters尽管剩余参数的常见用例对我来说非常清楚(functionfoo(...param

javascript - 带 block 的常量声明

最近我在研究FirefoxAdd-onBuilderSDK来源,并偶然发现了这样的常量声明:const{getCodeForKey,toJSON}=require("../../keyboard/utils");我可以找到关于CommonJSModules的信息,但是这个作业的左边部分让我有点困惑,因为它必须是特定于语言的,而且我无法在谷歌上搜索任何内容。谁能给我指点一些说明这里发生了什么的规范/草案? 最佳答案 这是一个destructuringassignment,目前仅由Firefox使用的SpiderMonkeyJavaSc

javascript - typescript 对象解构结果为 "Property assignment expected."

我正在将一个项目从Babel转换到Typescript并收到以下编译器错误:errorTS1136:Propertyassignmentexpected.来自如下代码:varauth={...this.props.auth};此代码以前在Babel下运行良好,但在尝试通过Typescript编译时导致上述错误。Typescript中的对象解构是否不同? 最佳答案 您要找的特征是Objectspread/restoperators(建议用于ES7)。看起来已经计划但尚未实现:Wewanttowaitfortheproposaltore

javascript - ES6 函数中 while 循环中的解构赋值不会在循环外传播?

我在ES6中(通过node-esml)实现了一个简单的GCD算法,并且(对我而言)在while循环中更新变量值时出现了奇怪的行为。这段代码非常有效:functiongcdWithTemp(x,y){let[r,rdash]=[x,y]while(r!=0){q=Math.floor(rdash/r)temp=rr=rdash-q*rrdash=temp}return(rdash)}console.log(gcdWithTemp(97,34))返回1的预期答案。但是,如果我删除临时变量并改为使用解构赋值来尝试获得相同的结果:functiongcdWithDestructuredAssig

javascript - 解构赋值导致错误: "unexpected token ="

假设我在es6中调用usethissyntax:leta,b;{a,b}={a:100,b:300};代码将正常运行;但让我们改写成这样:functionfn(){return{a:100,b:200}}leta,b;{a,b}=fn();当我运行上面的代码时,它显示意外标记“=”;我有点困惑,有什么区别? 最佳答案 添加圆括号:({a,b}=fn());来自Mozilla文档:在没有声明的情况下使用对象文字解构赋值时,赋值语句周围的圆括号(...)是必需的语法。{a,b}={a:1,b:2}是无效的独立语法,因为左侧的{a,b}-

javascript - 在 JavaScript 中解构对象时如何绑定(bind)方法?

在JavaScript中解构对象时如何绑定(bind)方法?constperson={getName:function(){console.log(this);}};vara=person.getName;varb=person.getName.bind(person);var{getName:c}=person;person.getName();//=>{getName:[Function]}a();//=>windoworglobalb();//=>{getName:[Function]}c();//=>windoworglobal我希望c在控制台中登录它的“父”对象{getNam

javascript - 带有必需参数的 typescript 解构

编辑抱歉,我的问题有点不清楚。我想强制执行始终需要getList参数。所以我没有它的默认值。例如,我希望用户始终提供一个getlist我正在尝试创建一个带有一些可选参数和一些必需参数的构造函数exportclassPageConfig{constructor({isSliding=false,}:{isSliding?:booleangetList:(pagingInfo:PagingInfo)=>Observable}={}){}}当我这样做时,我遇到了一个错误getListismissingintype'{}'butrequiredintype...我希望能够像这样在类中使用它:c

javascript - 解构嵌套对象 : How to get parent and its children values?

下面的函数接收一个对象,该对象具有属性current,它也是一个对象,并且它具有selectionStart和selectionEnd属性。在这里,嵌套解构按预期使用Start和End变量工作,但我还需要current的值。functionsomeFunction({current:{selectionStart:Start,selectionEnd:End}}){//dosomethingwithcurrent,Start,andEnd}我如何使用解构得到它? 最佳答案 第一个解构只创建Start和End变量。如果要将curren