我一直在努力为我正在开发的网络应用创建一个小型库。在创建这个库时,我可以在脚本的顶部输入一个日志语句,下面的所有内容都可以正常工作。但是,如果我删除顶部console.log语句,我会收到错误。代码如下。错误是:
ReferenceError: assignment to undeclared variable TestFirst
代码:
$(document).ready(function() {
(function() {
console.log('starting');
'use strict';
function define_TestFirst() {
function TestFirst () {};
return TestFirst;
}
if (typeof(TestFirst) === 'undefined') {
console.log('defined');
TestFirst = define_TestFirst();
TestFirst.prototype.test = function () {
console.log('TestFirst object created.');
}
} else {
console.log('TestFirst library already defined!');
}
})();
});
答案 0 :(得分:2)
问题是"use strict"
必须是您的函数的第一个语句才能被使用。否则就会被忽略。
现在,我猜你看到了问题:
问题不在于移除顶部console.log
,而是关于use strict
不再被忽略。
脚本在严格模式下运行的问题是必须首先声明任何变量:
ReferenceError: assignment to undeclared variable TestFirst
表示您需要在 var
var
TestFirst = define_TestFirst();
语句
答案 1 :(得分:0)
如错误所示,您没有使用TestFirst
声明 var
,但为其指定了值(或使用window.TestFirst = ...
):
TestFirst = define_TestFirst();
您需要严格模式,但在console.log()
之前使用use strict
会导致use strict
无法启用严格模式。
要为整个脚本调用严格模式,请输入确切的语句 “严格使用”; (或'使用严格';)在任何其他陈述之前。