QUnit returns 严格模式下的错误
QUnit returns error in strict mode
我正在尝试为它创建一个(纯)构造函数和一个 QUnit 测试:
//app.js
function myFunc(param1, param2) {
this.param1 = param1;
this.param2 = param2;
return this;
}
//test.js
QUnit.test("should return a string and a number", function(assert) {
assert.ok(myFunc("some-string", 4545435234), "a string and a number were returned");
});
代码运行并通过我的测试,直到我将 "use strict"
添加到 app.js
。然后 QUnit 显示以下失败消息:
1. Died on test #1 at http://some/url/:1:1: Cannot set property 'param1' of undefined
Source: TypeError: Cannot set property 'param1' of undefined
如果我 return 将 myFunc
参数作为数组,我可以让代码工作并通过测试:
function myFunc(param1, param2)) {
return [param1, param2];
}
但这似乎不对。我知道这与 var 提升有关,但我不清楚。
提前致谢。
...
在严格模式下 JavaScript 函数没有默认上下文 (this
),因此您必须提供上下文。一种方法是通过 new
关键字。如果您将断言更改为以下内容,我认为这会起作用:
assert.ok(new myFunc("some-string", 4545435234), "a string and a number were returned");
我正在尝试为它创建一个(纯)构造函数和一个 QUnit 测试:
//app.js
function myFunc(param1, param2) {
this.param1 = param1;
this.param2 = param2;
return this;
}
//test.js
QUnit.test("should return a string and a number", function(assert) {
assert.ok(myFunc("some-string", 4545435234), "a string and a number were returned");
});
代码运行并通过我的测试,直到我将 "use strict"
添加到 app.js
。然后 QUnit 显示以下失败消息:
1. Died on test #1 at http://some/url/:1:1: Cannot set property 'param1' of undefined
Source: TypeError: Cannot set property 'param1' of undefined
如果我 return 将 myFunc
参数作为数组,我可以让代码工作并通过测试:
function myFunc(param1, param2)) {
return [param1, param2];
}
但这似乎不对。我知道这与 var 提升有关,但我不清楚。
提前致谢。 ...
在严格模式下 JavaScript 函数没有默认上下文 (this
),因此您必须提供上下文。一种方法是通过 new
关键字。如果您将断言更改为以下内容,我认为这会起作用:
assert.ok(new myFunc("some-string", 4545435234), "a string and a number were returned");