[英]Why does console.log stop errors in javascript Library?
我一直在为正在开发的Web应用程序创建一个小型库。 在创建此库时,我可以在脚本顶部输入一个log语句,下面的所有内容都可以正常工作。 但是,如果删除顶部的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!');
}
})();
});
问题在于, "use strict"
必须是您的函数的第一条语句才能被使用。 否则将被忽略。
现在,我想您已经看到了问题:
问题不在于删除顶级console.log
,而是关于不再use strict
忽略use strict
。
您的脚本在严格模式下运行的问题在于必须首先声明任何变量:
ReferenceError: assignment to undeclared variable TestFirst
意味着您需要在var
TestFirst = define_TestFirst();
处添加var
语句TestFirst = define_TestFirst();
如错误所示,您没有使用var
声明 TestFirst
,而是为其分配了一个值(或使用window.TestFirst = ...
):
TestFirst = define_TestFirst();
您需要严格模式,但是在use strict
之前use strict
console.log()
会导致use strict
不启用严格模式。
要为整个脚本调用严格模式,请输入确切的语句“ use strict”; (或“使用严格”;)之前的任何其他声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.