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");