2017-07-26 6 views
3

私はCodePenとChromeで拡散演算子をテストしましたが、私は別の結果を得ました。 CodePenでCodePenとChromeの普及担当者が異なる結果をもたらすのはなぜですか?

var str = 'foo'; 
var char = [...str]; 
console.log(char); 

私はバベルのプリプロセッサを使用して["foo"]を得ました。

Chromeデベロッパーツールでは、["f", "o", "o"]を取得しました。

どうしてですか?

+0

が正常に動作します:https://codepen.io/anon/pen/brdqGw?editors=1111 –

+0

@SureshAtta私はバベルを使用プリプロセッサ –

答えて

4

コメントに記載されているとおり、これはbabel js transpilerに関連しています。 がcodepenように見えるこのバベル-プリセットes2015-looseを使用して、その広がりオペレータの実装では、いくつかの相違がありますされています

バベルの緩いモードはES6セマンティクスに忠実 少ないES5コードにES6コードをtranspiles。

ソース:http://2ality.com/2015/12/babel6-loose-mode.html

これは実際codepen問題であるが、彼らはおそらく、これらの日looseモードを使用すべきではありません。

0

ここでは、CodepenとJS Binによってコンパイルされたコードの違いを見ることができます。

コンパイルCodepen:コンパイル

'use strict'; 

var str = 'foo'; 
var char = [].concat(str); 
alert(char); 

JSビン:

try { 
'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); } } 

    var str = 'foo'; 
    var char = [].concat(_toConsumableArray(str)); 
    window.runnerWindow.proxyConsole.log(char); 
} catch (error) { throw error; } 
関連する問題