- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么函数调用中的解构逻辑实际上是在声明一个新变量。
function fn() {}
let object = {x: "Ele", y: "From", z: "Stack"};
fn({x} = object);
console.log(x);
其次,下面的逻辑有什么问题。我收到 Uncaught ReferenceError: x is not defined
。但是,当我使用 var
时工作正常。
function fn() {}
let object = {x: "Ele", y: "From", z: "Stack"};
fn({x} = object);
let x = "Dummy";
console.log(x);
我对以前的逻辑缺乏了解。
最佳答案
...actually declaring a new variable
这就是我所说的The Horror of Implicit Globals .这一行:
fn({x} = object);
是有效的:
({x} = object);
fn(object); // a bit of hand-waving here, but roughly speaking...
因为它分配给一个未声明的变量,所以它创建了一个全局变量。如果你使用的是严格模式,你会得到一个 ReferenceError:
"use strict";
function fn() {}
let object = {x: "Ele", y: "From", z: "Stack"};
fn({x} = object);
console.log(x);
赋值的结果是赋值。在解构分配的情况下,分配的值是被解构的东西(object
的值,在您的情况下)。
...secondly, what's the problem in the logic below. I'm getting
Uncaught ReferenceError: x is not defined
添加 let x
时出现的问题是,分配给 x
的行现在位于声明 x
的时间死区中. x
在此时是保留,但未初始化。错误消息显示“未定义”,因为 let x
行尚未执行。就好像你有:
x = 0;
let x;
关于javascript - 函数参数中的解构赋值到底是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55797127/
这对你们来说可能很简单,但由于我是java新手,所以我想知道实际上什么是 接下来的部分会发生什么? if (args.length > 0) { file = args[0]; } publi
在我的 View Controller 中,我将 UITapGestureRecognizer 添加到 self.view。我在 self.view 之上添加了一个小 View 。当我点击小 View
我今天尝试从 Obj-C 开始并转到 Swift,我正在阅读文档。我试图在 Swift 中创建一个简单的 IBOutlet,但它不断给我这些错误。 View Controller 没有初始化器 req
我正在尝试使用 VIM 完成(字典和当前缓冲区),但我遇到了问题?和 !在方法名称的末尾。我能以某种方式向 vim 解释方法名称(基本上是单词)最后只能有它,而且只有一个,即 method_name
我是一名优秀的程序员,十分优秀!