当前位置: 首页 > 面试题库 >

没有var的对象分解

郑翰海
2023-03-14
问题内容

如果对象解构var前面没有关键字,为什么会抛出错误?

{a, b} = {a: 1, b: 2};

抛出 SyntaxError: expected expression, got '='

以下三个示例可以正常工作

var {a, b} = {a: 1, b: 2};
var [c, d] = [1, 2];
    [e, f] = [1, 2];

额外的问题:为什么我们不需要var数组解构?

我在做类似的事情时遇到了问题

function () {
  var {a, b} = objectReturningFunction();

  // Now a and b are local variables in the function, right?
  // So why can't I assign values to them?

  {a, b} = objectReturningFunction();
}

问题答案:

问题源于{...}运算符在JavaScript中具有多种含义。

{出现在 Statement 的开头时,它将始终代表一个块,该块不能分配给该块。如果它稍后在 Statement中 作为Expression出现,则它将表示一个Object。

var有助于使这种区别,因为它不能跟一个 声明 ,如将分组括号:

( {a, b} = objectReturningFunction() );

根据他们的文档:

注意:当使用不带声明的对象文字解构分配时,必须在赋值语句周围加上括号(…)。

{a,b} = {a:1,b:2}是无效的独立语法,因为左侧的{a,b}被认为是一个块,而不是对象文字。

但是,({a,b} = {a:1,b:2})是有效的,var {a,b} = {a:1,b:2}也有效

您的(…)表达式必须以分号开头,或者可以将其用于执行上一行的功能。



 类似资料:
  • 这是我的密码: 这条线给了我错误 "属性错误:'浮点'对象没有属性'exp'"。X,t是Numpy ndarray。

  • 问题内容: 用JavaScript 编写循环的正确方法是什么?浏览器不会对我在此处显示的两种方法提出任何投诉。首先,有一种方法可以明确声明迭代变量: 另外,这种方法更自然,但对我而言似乎不正确: 问题答案: 使用,它会减小变量的范围,否则变量将查找最接近的闭包以查找语句。如果找不到,则表示它是全局的(如果处于严格模式下,则全局变量将引发错误)。这可能会导致如下问题。 如果您在for循环中编写警报,

  • 我有以下疑问: 包含

  • 本文向大家介绍javascript定义变量时有var和没有var的区别探讨,包括了javascript定义变量时有var和没有var的区别探讨的使用技巧和注意事项,需要的朋友参考一下 我们先来看一段代码 有过C++或Java编程经验的人可能会说:“这程序,死定了,变量竟然在引用了该变量的函数后边定义,bug会灭掉你的。”放在浏览器上运行一下,结果怎样?完美运行!接下来我们就说一下这是咋回事——有v

  • 问题内容: 我正在开发Django应用程序,并且出现以下错误 我的模型是这样构造的 我应该做什么? 问题答案: 首先,您必须非常小心地重写以具有非可选参数。记住,每次从一个查询集中获取一个对象时,它将被调用! 这是您想要的正确代码: 如果您只使用该对象的子类,我强烈建议在Animal上设置abstract选项。这样可以确保不为动物创建表,而仅为绵羊(等)创建表。如果未设置abstract,则将创建

  • 问题内容: 该函数的第一行在:类上获取错误。 我遵循Django文档教程,并且它们具有相同的代码并正在运行。 我尝试调用一个实例。 也是我该类的models.py代码是… 无济于事,我仍然有这个错误。 我已经读过有关pylint的文章并进行了运行… 这没有帮助,即使github自述文件说… 防止有关Django生成的属性(例如Model.objects或Views.request)的警告。 我在我