我正在使用Nightwatch.js,最近我发现了代码的一个有趣行为。
我试图用来自 JS6 的async/await命令替换回调结构。
最初
最初我从这段代码开始。它检查浏览器窗口中是否有 2 个选项卡。
# main.js
client.windowHandles((result) => {
client.verify.equal(result.value.length, 2);
});
工作代码
我将其替换为:
# main.js
const { assignVariable } = require("../../utils/callbacks");
let windows = {};
await client.windowHandles(assignVariable(windows));
client.verify.equal(windows.value.length, 2);
其中assignVariable是:
# callbacks.js
const assignVariable = (variable) => {
return (result) => {
variable.value = result.value;
};
};
module.exports = { assignVariable };
这段代码有效。
不工作的代码
当我想将assignVariable更改为:
# callbacks.js
const assignVariable = (variable) => {
return (result) => {
variable = result;
};
};
module.exports = { assignVariable };
问题
然后assingVariable似乎根本没有影响。我正在调试这一行,并执行了assignVariable中的赋值,但是当我们回到main.js时,对象窗口仍然等于{}。
我希望我已经解释清楚了。
PS 这是我在 StackOverflow 中的第一个问题,所以请耐心等待。:)