Ele*_*Ele 2 javascript destructuring
我不明白为什么函数调用中的销毁逻辑实际上是在声明一个新变量。
function fn() {}
let object = {x: "Ele", y: "From", z: "Stack"};
fn({x} = object);
console.log(x);Run Code Online (Sandbox Code Playgroud)
其次,下面的逻辑有什么问题。我得到了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);Run Code Online (Sandbox Code Playgroud)
我以前的逻辑知识不足。
...实际上是在声明一个新变量
这就是我所谓的“内隐全球性恐怖”。这行:
fn({x} = object);
Run Code Online (Sandbox Code Playgroud)
有效地:
({x} = object);
fn(object); // a bit of hand-waving here, but roughly speaking...
Run Code Online (Sandbox Code Playgroud)
由于它是分配给一个未声明的变量,因此会创建一个全局变量。如果您使用的是严格模式,则将获得ReferenceError:
fn({x} = object);
Run Code Online (Sandbox Code Playgroud)
分配的结果就是所分配的值。在进行销毁分配的情况下,分配的值就是正在销毁的事物(object在您的情况下为的值)。
...其次,下面的逻辑有什么问题。我越来越
Uncaught ReferenceError: x is not defined
添加时出现的问题let x是,分配给的行x现在位于的声明的时间死区中x。x此时保留,但未初始化。错误消息显示为“未定义”,因为该let x行尚未执行。好像你有:
x = 0;
let x;
Run Code Online (Sandbox Code Playgroud)