lib(Beard.js)がjavascriptテンプレートエンジンHamlをサポートするようにしようとしていたときに非常に奇妙な問題が発生しました。IE8で非常に奇妙なこと..定義された変数が「未定義」と認識される
Hamlを正しく読み込むことができませんでした。私はコードを追跡し、Hamlがページにロードされたことがないことを確認します。たくさんの試行錯誤の後、私はそれがうまく動作するようにした。私が見つけた変なものがある:起源HAMLのlibに
、それは次のとおりです。
var Haml;
(function(){
...
Haml = function(){ ... }
...
}());
私は、コードを変更:
なぜ...それは動作します
var Haml;
(function(){
...
window.Haml = function(){ ... }
...
}());
? ?? Hamlは自動的にグローバルスコープで定義されたものとして認識されるべきではありませんか?
環境 - IE8
Haml.js - https://github.com/creationix/haml-js
Bear.js - https://github.com/jspopisno1/Beard
-------------- UPDATE ---------- ----- Haml.jsで
、それは次のとおりです。
var Haml;
(function(){
...
Haml = function Haml(){ ... }
...
}());
私はJavaScriptで推測、声明 "機能HAML(){}" HAMLローカルVARます。しかし、なぜFirefoxでHamlを正しく読み込むことができないのですか?& Chrome ???
IE8は愚かです.... –
ただ真実を語ってください。 –
@Mahnax - IE 8が他のブラウザと異なる理由とECMA-262との矛盾点について、あなたの説明は何ですか?もしあなたがそれを持っていなければ、他のブラウザが "愚か"ではないことをどのように知っていますか? – RobG