修复编译为undefined?

时间:2016-03-26 15:22:18

标签: javascript node.js ecmascript-6 babeljs

我的app.js是用es6标准编写的,我的问题是> 我该如何使用这样的代码?:

$('img').each(() => {
    var title = $(this).attr('src');
    titles.push(title);
});

我观察到该节点将此代码编译为:

'use strict';

$('img').each(function () {
    var title = $(undefined).attr('src');
    titles.push(title);
});

编译这个'如果不确定',我该如何解决? thx提前;)

2 个答案:

答案 0 :(得分:1)

箭头函数以词法方式绑定this值 - 请参阅MDN docu

  

由于这已经被词法绑定,因此调用箭头函数   通过call()或apply()方法只能传入参数,但是   对此没有影响:

您可以通过简单地使用普通旧函数来修复它:)

答案 1 :(得分:1)

另一种解决方案是使用传递给回调的元素,如.each文档中定义的那样 - 函数(整数索引,元素元素):



var titles = [];

$('img').each((index, element) => {
    var title = $(element).attr('src');
    titles.push(title);
});

document.getElementById('demo').innerHTML = JSON.stringify(titles, undefined, 4);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<img src="http://38.media.tumblr.com/avatar_502c67b98956_64.png">

<img src="https://s-media-cache-ak0.pinimg.com/favicons/62c7e8f531e824f6f8da34453cdd698a8856f3aea36118408c3e5c09.png?9e884f0299eee37aedab60fe1ed363b5">

<pre id="demo"></pre>
&#13;
&#13;
&#13;