Firefox 20 から for-each 構文がコンテンツ上で事実上の死

for each構文はE4Xの構文とはいえ、JavaScript 1.6から定義されたものなので、バージョン1.6以上を指定したもの以外は実行できなくしようというもの。

791343 -disable for-each statement on javascript.options.xml.{content|chrome} = falseでfor-eachを消し去ろうとしたボクの案は却下され、段階的にやっていくのが採用された感じ。

キャプチャ画像


エラー文が"missing ( after for"とイマイチ気に入らない感じだけど、いいことですね。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>forEach test</title>
</head>
<body></body>
<script>
try {
var list = ["a","b","c"];
eval('for each (var val in list) {}');
console.log("non-version");
} catch(e) {
console.error("non-version", e.message);
}
</script>
<script type="text/javascript;version=1.5">
try{
var list = ["a","b","c"];
eval('for each (var val in list) {}');
console.log("version", "1.5");
} catch (e) {
console.error("1.5", e.message);
}
</script>
<script type="text/javascript;version=1.6">
try{
var list = ["a","b","c"];
eval('for each (var val in list) {}');
console.log("version", "1.6");
} catch (e) {
console.error("1,6", e);
}
</script>
<script type="text/javascript;version=1.7">
try{
var list = ["a","b","c"];
eval('for each (var val in list) {}');
console.log("version", "1.7");
} catch (e) {
console.error(e);
}
</script>
<script type="text/javascript;version=1.8">
try{
var list = ["a","b","c"];
eval('for each (var val in list) {}');
console.log("version", "1.8");
} catch (e) {
console.error(e);
}
</script>
<script type="text/javascript;version=1.9">
try{
var list = ["a","b","c"];
eval('for each (var val in list) {}');
console.log("version", "1.9");
} catch (e) {
console.error(e);
}
</script>
</html>

一応テストしたデータも載せておくね。