2014-01-13 29 views
2

我的代碼:javascript,嚴格模式,斷點對結果有影響嗎?

'use strict'; 
var foo=function(){ 
    alert(this); 
} 
var bar = { 
    baz:foo, 
}; 
var x = bar.baz; 
x();//1 

當我直接執行,所有罰款,警告undefined。當我在(1)處插入斷點時,按兩次F11,提示window

任何人都可以解釋它嗎?非常感謝。

+0

更正您的代碼第一 – Khamidulla

+0

@Phoenix,我知道代碼看起來很奇怪,但沒有錯誤,執行正常。所以它有什麼問題?你能說清楚嗎? – zilong

+0

@meagar注意'使用strict',沒有破發點,警報不確定 – zilong

回答

1

我創建了jsfiddle並檢查它。我在1添加斷點,當我使用F11 console.logalert(我改變了警報登錄最後的例子)顯示我undefined ...但後來我停在斷點和調用瀏覽器開發工具控制檯x()結果是範圍對象在Mac OS X/Chrome最新版本,結果爲undefined,適用於Mac OS X/Firefox las版本。

因此,在像開發工具控制檯這樣的非標準線程中執行的結果是不同的,並且與javascript語言沒有關係。

+0

謝謝。但在調試模式下的結果與標準模式下的結果不同,這很奇怪......是否有任何文章可以解釋它? – zilong

+0

由於瀏覽器使用包裝器來調試線程,如Gecko,使用[XPCOM](https://developer.mozilla.org/en-US/docs/Mozilla/XPCOM)或Blink使用自己的V8 shell /調試服務器[implementation](https: //chromium.googlesource.com/chromium/blink.git/+/master/Source/bindings/v8/PageScriptDebugServer.cpp)。 – Pinal