[英]Strange variable undefined error in console.log
有人可以解釋為什么控制台如此操作嗎?
我曾經發布過這個問題,但是我不能完全正確地制定它,所以我再次關閉了它。 最初的問題沒有提到問題可能與控制台有關,我只是質疑變量的奇怪行為。 我基本上只發布了以下屏幕截圖:
請注意,我在第20行登錄$s.page
, $s.page.navi
在那兒,在第21行,當我再次登錄時,它消失了。
盡管@zerkms建議它與控制台本身有關,但是沒有人可以給出答案。 在我關閉問題后,他通過以下帖子與我聯系: 僅當我實際需要它們才能重新打開問題時,才需要require.js加載我的文件 。
足夠的介紹,回到問題。 所以變量去了哪里。 從我發布的另一個問題中,您可以看到我使用require.js加載文件。 我對此很陌生,所以我的問題與此有關。
在$s.page
的代碼中,執行以下操作(簡化):
require(['nav'], $.proxy(function(Nav){
this.navi = new Nav.Views.Main();
}, this));
nav
是require.js必須加載的模塊。 我腳本將一直阻塞,直到文件存在為止,然后在控制台上確認這一點。
讓我更詳細地登錄:
console.log('x');
require(['nav'], $.proxy(function(Nav){
console.log('y');
this.navi = new Nav.Views.Main();
}, this));
我將其他日志留在原處,這是輸出:
請注意, x
是首先記錄的。 我$s.page
,當我隨后登錄$s.page
它將向我顯示$s.page
的未來情況 。 真的很奇怪
然后,當我在下一行登錄$s.page.navi
時,它不存在,這是正確的。
然后,直到最后, y
甚至沒有被召集,就加入了該黨。
請參閱router.js的第22行,我將其稱為$s.page.navi.start()
,這就是此問題的全部重點。 無法發射。 我用以下代碼解決了它:
require(['nav'], function(Nav){
$s.page.navi.start();
});
它只會等待它的依賴關系。
當使用JavaScript以及諸如ribs.js和require.js之類的庫時,您應該真正跟蹤自己在做什么,並記住該腳本不容易阻塞。
僅在應用程序中的某些位置進行日志記錄並不能總是幫助您解決問題,您必須真正地從應用程序的根目錄登錄到葉的尖端,以查看實際發生的情況。 最好的方法始終是在調試器中進行構建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.