我使用以下代碼非常隨機地(大約一次在200次嘗試中)收到「參考錯誤」。Javascript命名函數表達式,參考錯誤
var securityPrototype = {
init: function(){ /* ... */ },
encryptionKey: function x() {
var i = x.identifier;
return getKey(i);
}
}
securityPrototype.encryptionKey.identifier = Date.now();
function Security(){}
Security.prototype = securityPrototype;
Security.constructor = Security;
function getKey(){ /* ... */ }
var gate = new Security()
gate.encryptionKey(); // Randomly throws : ReferenceError: x is not defined
該代碼段位於其他代碼中,但沒有使用「eval」,也沒有使用'with'運算符。
我想弄清楚是否由於任何情況可能在這裏得到這個錯誤。
重現此操作的瀏覽器:Mac和Windows上的Chrome。 IE和Safari工作正常。
最有可能'Math.random'是你的問題,因爲你得到的錯誤「隨機」。是否允許'Math.random'的所有值? – Afsa 2014-08-29 19:30:25
如果是這樣,我們會得到一個不同的錯誤。其實這是可以替代的,因爲我試圖抽象函數。 – sbr 2014-08-29 19:35:50
你得到錯誤的時間與沒有的時間必須有所不同。將'securityPrototype.encryptionKey.identifier'設置爲固定值,看看是否仍然出現錯誤。 – Afsa 2014-08-29 19:42:12