2013-04-03 37 views
1

通常在Javascript中,如果您從函數內引用「魔術」arguments變量,它將包含傳遞給該函數的所有參數。儘管如此,在Chrome開發人員工具(在Linux上),這並沒有發生;如果您:有沒有辦法讓Chrome在`arguments`中包含未聲明的參數?

  1. 添加debugger語句一些功能沒有任何聲明的參數
  2. 做些事情來觸發與一個參數,函數
  3. 當Chrome瀏覽器上的debugger線停頓,從檢查arguments控制檯。

您會看到arguments爲空。現在,只需在函數中聲明參數就可以很容易地解決這個問題。換句話說,如果你這樣做:

function(a,b,c) { 
    debugger; 
} 

代替:

function() { 
    debugger; 
} 

arguments有參數(或至少前三)。

但是,這真的不應該是必要的,這導致我的問題:是否有任何設置我可以改變,或者有什麼我可以做的,以解決這種行爲,只是讓Chrome把每次傳入參與到arguments,而不只是宣佈的?

+0

可能是'debugger' statemant打破了你的currient範圍。無論如何,奇怪。 – rekire 2013-04-03 18:55:02

+0

這是非常可能的:如果我'console.log(arguments)'而不是使用'debugger',那麼會記錄正確的參數(即使它們未聲明),所以這看起來特定於'調試器'。 – machineghost 2013-04-03 20:16:17

+1

你也可以說var keep = arguments; – 2013-06-12 19:59:19

回答

1

這個最近已經在V8 JavaScript引擎中重做。不久它將進入Chrome代碼庫,最終將進入穩定版本(可能是28. 。*?)。

+0

感謝您的信息;有點煩,不得不等待,但它是固定的,這太好了.-) – machineghost 2013-04-05 18:55:35

相關問題