簡體   English   中英

為什么console.log停止javascript庫中的錯誤?

[英]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不啟用嚴格模式。

從MDN:

要為整個腳本調用嚴格模式,請輸入確切的語句“ use strict”; (或“使用嚴格”;)之前的任何其他聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM