小编Shi*_*e93的帖子

为什么如果我将对象设置为新变量,它会保存变量的初始值?

我发现JavaScript的一些奇怪的行为,将变量作为参数传递给函数,这里是片段:

var notWorks = {
    aa: "string",
}

function why() {
    var thisWorks = notWorks;
    $.get("/echo/json").then(function() {
        printVal(notWorks);
        printVal(thisWorks);
    });
    notWorks = {};
}

function printVal(val) {
    console.log(val);
}
why();
Run Code Online (Sandbox Code Playgroud)

输出是:

Object {  }
Object { aa: "string" }
Run Code Online (Sandbox Code Playgroud)

对于变量notWorks,一切都很清楚 - 当变量已经被清除时,调用then()中的函数.但是为什么如果我将这个对象设置为一个新变量,它会保存变量的初始值?对象通过链接传递给功能,不是吗?

举例说明:https://jsfiddle.net/cev8m79y/

javascript

8
推荐指数
1
解决办法
94
查看次数

标签 统计

javascript ×1