我試圖限制暴露在一個孤立的封閉中的eval
的局部變量的數量,以保持範圍儘可能沒有受到污染。但我也需要遍歷一個傳遞的數組,所以我做的非常類似於這樣:這是for-in循環標準嗎?
var oObj = [{
key: "",
arr: {
"one": 1,
"two": 2,
"three": 3
}
}];
for (oObj[0].key in oObj[0].arr) {
console.log(oObj[0].arr[oObj[0].key]);
}
在我實際的代碼,oObj
傳遞到closure'd函數作爲第一個參數(如arguments[0]
)等等唯一暴露給該函數的局部變量是arguments
(無論如何都是暴露的)。
此代碼按預期工作,但jshint.com列出了不少於12個警告代碼塊。
所以......我在這裏推動信封太遠還是我符合標準?對於key
,for-in
迴路可以使用object.property
嗎? JSHint似乎並不這麼認爲,而我嘗試過的所有內容似乎都很滿意。
注意,有什麼之間的規範允許(任何事情),什麼被認爲是「最佳實踐」的差異(什麼棉短絨如JSLint的和JSHint檢查)。僅僅因爲它沒有通過JSHint並不意味着它不是有效的JavaScript代碼。 –