2012-12-17 243 views
0

我已經編寫了一個代碼,如圖所示,我在其中分配了一個全局變量值,該值暫停了我的進一步代碼執行。JavaScript全局變量賦值

resultCollection是全局變量。另外我的程序在嚴格模式下運行。

"use strict"; 
var View = Backbone.View.extend({ 
    initialize : function(options){ 
     this.el = options.el; 
     resultCollection = options.resultCollection; 
     console.log('resultCollection',resultCollection); 
     this.render(); 
    } 

console.log從未打印過,並且執行不停止,只是在全局變量被賦值時暫停或仍然執行。

爲什麼會發生這種情況?任何人都可以給我一些見解嗎?

+0

你是在瀏覽器中還是在服務器代碼?你在嘗試/趕上? – Magus

+0

它是客戶端JavaScript,因此在瀏覽器上。它不在try/catch塊中。我正在使用BackboneJS,其中此代碼已寫入某個Backbone View的初始化函數中。 – SrikanthManian

+1

'window.resultCollection'如何? – zerkms

回答

0

在嚴格模式下,您應該看到控制檯中的錯誤。

所以用window.加上你的變量名就可以了。

PS:看到http://jsfiddle.net/zerkms/6M3HM/

在控制檯,你會得到Uncaught ReferenceError: b is not defined,而全球a定義好。

+0

我明白你想說什麼。當添加到Window對象時,它將起作用。我想問的是爲什麼沒有使用「嚴格模式」,瀏覽器沒有拋出異常。 – SrikanthManian

+0

@SrikanthManian:它確實會拋出它。檢查jsfiddle鏈接 – zerkms

+0

我檢查了它,但爲什麼它不會拋出我的特定代碼? – SrikanthManian