質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

798閲覧

JavaScriptをIEでだけ実行できません

scall.love

総合スコア7

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/08/01 07:48

###前提・実現したいこと
JavaScriptで10000番目の素数を求める
プログラムを実行

###発生している問題・エラーメッセージ
IEで表示されない

エラーメッセージ

###該当のソースコード
JavaScriptで実行

<!DOCTYPE html> <html> <head> <title>eratosutenesu</title> <meta charset="UTF-8"> </head> <body> <script> "use strict"; function eratosutenesu(n){ var erst=[...Array(n).keys()]; [erst[0],erst[1]]=[null,null]; var max=Math.sqrt(n); for(let x=2;x<max;x=0|x+1){ if(!erst[x]) continue; for(let i=x*2;i<n;i=0|i+x){ erst[i]=null; } } return erst.filter(i=>i); } (function(){ var start = new Date(); document.write(eratosutenesu(500000)[9999]); var end = new Date(); document.write(','); document.write((end -start)/1000 + ' sec.'); }()); </script> </body> </html> <!DOCTYPE html> <html> <head> <title>eratosutenesu</title> <meta charset="UTF-8"> </head> <body> <script> "use strict"; function eratosutenesu(n){ var erst=[...Array(n).keys()]; [erst[0],erst[1]]=[null,null]; var max=Math.sqrt(n); for(let x=2;x<max;x=0|x+1){ if(!erst[x]) continue; for(let i=x*2;i<n;i=0|i+x){ erst[i]=null; } } return erst.filter(i=>i); } (function(){ var start = new Date(); document.write(eratosutenesu(500000)[9999]); var end = new Date(); document.write(','); document.write((end -start)/1000 + ' sec.'); }()); </script> </body> </html>

###試したこと
他のJavaScriptでのプログラムは実行できまし

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2017/08/02 07:14

質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
guest

回答2

0

ベストアンサー

残念ながら、[]の中に...を書く記法や、=>を使った関数リテラルなどはES6といって新しく制定された部類の文法で、IE 11ではまともに実行できません(サポート状況)。

選択肢は3つで、「IE 11も対応を切り捨てる」「ES5の書き方で書く」、そして「BabelなどでES5に変換する」のどれかが必要となります。

投稿2017/08/01 07:54

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

scall.love

2017/08/01 09:20 編集

<!DOCTYPE html> <html> <head> <title>eratosutenesu</title> <meta charset="UTF-8"> </head> <body> <script> 'use strict'; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; }return arr2; } else { return Array.from(arr); } } function eratosutenesu(n) { var erst = [].concat(_toConsumableArray(Array(n).keys())); var _ref = [null, null]; erst[0] = _ref[0]; erst[1] = _ref[1]; var max = Math.sqrt(n); for (var x = 2; x < max; x = 0 | x + 1) { if (!erst[x]) continue; for (var i = x * 2; i < n; i = 0 | i + x) { erst[i] = null; } } return erst.filter(function (i) { return i; }); } (function () { var start = new Date(); document.write(eratosutenesu(500000)[9999]); document.write(','); var end = new Date(); document.write((end - start) / 1000 + ' sec.'); })(); </script> </body> </html> とES5に変換したのですがまだ実行できません。
maisumakun

2017/08/02 02:17

IE 11では「Array.from」もないので、さらなる変換が必要です。
guest

0

Array.from

JavaScript

1return Array.from(arr);

Array.from は MDN に Polyfill が存在します。

Array.prototype.keys

JavaScript

1var erst = [].concat(_toConsumableArray(Array(n).keys()));

Array.prototype.keys も ES6 の仕様であり、IE11- では使用できません。
各メソッドのサポート状況は ECMAScript 6 compatibility table や MDN にあるので、全て確認して下さい。

Re: scall.love さん

投稿2017/08/02 06:23

編集2017/08/02 06:53
think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問