是否有es6箭头function的polyfill?

是否有es6箭头function的polyfill?

下面的代码在IE中抛出语法错误exception,是否有一个polyfill使IE支持箭头函数?

 var myFunc = ()=>{ alert('es6'); } myFunc(); 

注意 :我不想使用任何transpiler

提前致谢

箭头function没有填充。 除非您使用转译器,否则编写您拥有的代码是语法错误。

一个polyfill可以添加或修改类,函数,对象,但是它不能修改编译器接受的语法。

添加新语法的function不能被重复填充。

我只能想到babel-standalone ,你可以把它看作是一个JIT编译器/转译器(如果这对你是OK的话)。

我非常青睐JS,所以我有一种感觉,这可能不符合polyfill的要求……不过它似乎确实是一个“胶带”的权宜之计。 我find了 Luis Perez制作的小提琴 ,它提供了这个function。 我仍然在努力更好地理解箭头函数,但它至less可以使用MDN箭头函数示例中的一个 。 这是我玩了一段时间后,我设法理解(至less)更好的笑话。 我希望对某人有用。

 var str = [ 'Hydrogen', 'Helium', 'Lithium', 'Beryllium' ]; var g_arrowCache = Object.create(null); function arrow(expression) { function cache(cache, key, getValueFunc) { var value = cache[key]; if(value === undefined) { value = getValueFunc(key); cache[key] = value; } return value; } function arrowImpl(expression) { // This function is a polyfill for proposed "arrow functions" in JavaScript. // Example: str.map(_$("str => str.length")) if (expression.search(/\bthis\b/) != -1) throw "'this' not supported"; var indexOfArrow = expression.indexOf("=>"); if(indexOfArrow == -1) throw "Expressio is missing the arrow operator =>"; var parametersString = expression.substring(0, indexOfArrow); parametersString = parametersString.replace("(", "").replace(")", ""); var parameters = parametersString.split(","); parameters.map(function(o) { return o.trim(); }); var functionBody = expression.substring(indexOfArrow + 2); if(expression.indexOf("{") != -1) throw "Use of curly brackets for multiple statements not supported or recommended."; if(expression.indexOf("}") != -1) throw "Use of curly brackets for multiple statements not supported or recommended."; functionBody = "return " + functionBody.trim() + ";"; var args = parameters.slice(0); args.push(functionBody); var func = Function.constructor.apply(null, args); return func; } return cache(g_arrowCache, expression, arrowImpl); } var _$ = arrow; console.log(str.map(_$("str => str.length")));