2017-09-13 9 views
-1

私は奇妙な状況に直面し、問題の原因を知りました。窓オブジェクトなしでclearInterval()メソッドを使用しました。私たちの開発者とQA環境でうまく動作しています。突然QA環境でclearInterval()が原因で奇妙な問題が発生しました。clearInterval()window.clearInterval()に変更すると奇妙な動作が修正されました。それでも私はなぜそれが起こったのか分からなかった。技術的には両方の用途(clearInterval()window.clearInterval())が同じです。なぜ彼らは異なった動作をしていますか?Window.clearInterval()とclearInterval()

+0

あなたはどこかで 'clearInterval'をオーバーライドしていませんか? – Cerbrus

+0

No..私はメソッドをオーバーライドしていませんでした。最後の木曜日の夜まで正常に動作していました。突然動作しません。 – honey

+0

これで[mcve]を提供できますか?問題を再現できない場合は、その問題の解決を支援することはできません。 – Cerbrus

答えて

-2

異なる動作は、グローバルなJavaScriptのスペースによるものです。

はそれについてこのように考える:

Array.find = function() { 

} 

これは、Arrayクラスのローカル関数を作成しますが、この:

Array.prototype.find = function() { 

} 

は、このように、Arrayクラスにグローバルほかが作成されます、異なる行動を誘発する。

しかし、まったく同じ関数内で全く異なる振る舞いが原因名前空間にある可能性があり、グローバル、ローカル、などJavaScriptでいくつかのものがちょうど少し奇妙です...

てclearIntervalも同様に動作するはずですwindow.clearIntervalとして違いはありませんが、あなたのQAには明らかに名前空間と可変スペースが原因です。

以下の答えは正しいです:私は彼らがJavascriptでクロージャーと呼ばれると思います。 ^ | 上記のコメントは間違っています。それは閉鎖とは関係ない、私の謝罪。

ありがとうございました。

+0

これはクロージャとは関係ありません。 – Cerbrus

+0

申し訳ありませんが、私は野生の推測をしていました。 – TheCodeCrafter

関連する問題