我有一個ES2015模塊:從方法返回的字符串將產生不確定的
export default class ArrayCollection {
constructor(items = []) {
this.items = items;
}
search(query) {
this.items.forEach(function (item, index) {
if (query == item) {
return `Your query ${query} was found in the array on the ${index} index`;
};
});
return `Your array does not contain a ${query}`;
}
}
在我main.js我有這樣的:
import ArrayCollection from './ArrayCollection';
let Numbers = new ArrayCollection([2, 4, 6, 8, 10]);
let searchResult = Numbers.search(4);
console.log(searchResult);
爲什麼會出現的console.log回報undefined
?
我想搜索一個項目的數組,如果它是有返回它。我知道在ES6中有特殊的方法,但我只想知道上面的代碼有什麼問題。
感謝。
===編輯===
如果通過webpack
或rollup
它產生通過任何瀏覽器上運行下面的代碼香草上面運行ES6代碼:
var ArrayCollection = function ArrayCollection(items) {
if (items === void 0) items = [];
this.items = items;
};
ArrayCollection.prototype.search = function search (query) {
this.items.forEach(function (item, index) {
if (query == item) {
return ("Your query " + query + " was found in the array on the " + index + " index");
}
});
// return `Your array does not contain a ${query}`;
};
var Numbers = new ArrayCollection([2, 4, 6, 8, 10]);
var searchResult = Numbers.search(4);
alert(searchResult);
這裏是JsFiddle這會產生相同的錯誤。如果我可以對ES6版本進行修正而不是編譯版本,那將會很不錯。
在什麼樣的環境,你得到'undefined'? Brower,Node.js,Babel? – nils
當我用'webpack'或'buble'編譯後通過瀏覽器運行代碼時,它返回'undefined'。我包括一個jsfiddle,希望這能回答你的問題。 – LoveAndHappiness