栈的特征是后入先出(LIFO),我认为用数组的length属性就可以很好构建了。代码如下(使用了闭包):
let stackMaker = function () {
let dataStore = [];
let push = function (item) {
dataStore.push(item)
};
let pop = function () {
if (!dataStore.length) return undefined;
let result = dataStore[dataStore.length - 1];
dataStore.length -= 1;
return result
};
let peek = function () {
if (!dataStore.length) return undefined;
return dataStore[dataStore.length - 1]
};
let clear = function () {
dataStore.length = 0
};
let length = function () {
return dataStore.length
};
return {
push,
pop,
peek,
clear,
length
}
};
自己测试了一下,可以正常使用。但是不知道这样写有什么我意向不到的坑么?
相关分类