javascript - 在函数中将变量赋值给自身

标签 javascript scope closures shadow hoisting

我试图在一个函数中将一个变量赋值给它自己,如果这个变量和函数的一个参数同名,它似乎不起作用,但如果它们不是同一个名字,它就起作用了。代码示例更清楚地说明了这一点。

这是我应该预料到的行为吗?这是我的 d3 用例的精简示例,它提示了这个问题。我也在下面展示了这一点。

无效示例

var a;

function assign(a) {
    a = a;
}
assign("test")
console.log(a)

undefined

工作示例

var a;

function assign(b) {
    a = b;
}
assign("test")
console.log(a)

test

用例

var data
d3.csv("data.csv", function(error, data) {
    //Doesn't work for me
    data = data
}
console.log(data)

undefined

最佳答案

在您的第一个示例中,传递给函数的参数 a shadows在外部定义的变量 a,因此:a=a 是将参数(传递给函数的)赋值给自身。

关于javascript - 在函数中将变量赋值给自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421176/

相关文章:

objective-c - 弱(与强)对象引用的生命周期是多少?

javascript - mongodb查询到javascript函数

javascript - 使用 AlpineJS 在循环中动态设置输入字段的名称属性

javascript - 在 d3.js 中创建值而不是随机数据

c++ - 作用域和 C++ 指针

javascript - 如何在循环中嵌套的函数调用中维护正确的变量范围/值

python - lambda 函数的内存地址

javascript - 在 JavaScript 中加载 json 文件

javascript - Node 是否内置了对 Websockets 的支持?

javascript - 在 Safari 中评估表达式 const 变量范围