假设我正在测试一个函数,并且我希望我的函数仅在未通过测试的情况下显示一些有关自身的信息。
我不想在保存数据供以后使用时更改功能的流程。
function foo(input){
//normal work of the function
//save the value of variable A
//normal work of the function
//save the value of variable B
//normal work of the function
}
这将是一个测试
fooTest(){
var condition = foo();
//display variable A and B depending on the value of the condition
}
我该怎么做?
就我而言,我正在测试功能,如果它们的测试失败,我希望它们向我展示其价值。如果他们没有失败,我不想在屏幕上显示信息。
答案 0 :(得分:2)
您可能想在函数执行后使用闭包来保留变量的值。
function set(A, B) {
// perform your operation
let a = A;
let b = B;
// The nested scope will remember the parent's scope
const getA = function() { return a; }
const getB = function() { return b; }
return { getA, getB };
}
var obj = set(10, 20);
console.log(obj.getA());
console.log(obj.getB());
答案 1 :(得分:1)
这可能是个好地方,请使用.call()
来更改this
上下文:
function foo(input){
//normal work of the function
this.A = 10;
//normal work of the function
this.B = 20;
//normal work of the function
}
function fooTest() {
let obj = {};
let condition = foo.call(obj);
console.log(obj.A, obj.B);
}
fooTest()