【发布时间】:2021-03-02 22:40:28
【问题描述】:
我也很感兴趣,“this”关键字指的是什么?我不明白这段代码 sn-p 发生了什么,以前从未见过这样的行为。
const var_name = 'abcd';
const n = 120;
this[var_name] = n;
console.log(this[var_name]) //120
【问题讨论】:
-
我不太确定到底是什么困扰着您。在您的情况下,
this指的是包装此 sn-p 执行上下文的某个对象(可能是window或任何类似的任意对象)。您的代码做了什么 - 它声明并初始化两个变量,然后将n的值分配给名为'abcd'的属性(这是var_name的值)。之后,您将该属性的值记录到控制台,它等于n(正如人们所期望的那样)。 -
而声明 '...const variables are immutable' 并不完全正确,因为您可以执行
const foo = {bar: 'baz'},但仍然可以执行foo.baz = 'qux'或,甚至,foo.bar = 'qux'。 -
令我困惑的是变量“var_name”(用“const”声明)被“n”的值(120)改变了。我被告知这是不允许的。
-
您似乎完全不知道上面的代码行到底做了什么。你不是吗?如果将
console.log(var_name)附加到以上行,则可以确保var_name变量没有 发生变异并且它仍然等于'abcd'。 -
你是对的——这就是我在这里问这个问题的原因。就像我之前说的,我不知道发生了什么。更准确地说,我不知道这行代码是什么意思:“this[var_name] = n;”我知道这指向执行上下文中的某个对象,但我不知道为什么它在 var_name 前面以及为什么 var_name 在括号中
标签: javascript constants immutability