最近在学习JS.. 网上看了一个网站代码不着调啥意思.就趴下来本地看看学习..
但是不明白这段代码是如果运行的..
而且最开始需要先打印a .后面打印 b实参才有数据..否则打印的b为 undefined...奇怪的逻辑
这段代码在原来的地方是可以运行的..我这边只是将 a 变量缩短了.太长了. 但是不明白这里 b['push'] 和 b['shift'] ...
实参b应该是和 var a一样的啊..数组这样怎么取值没搞明白...对象才是这样取值的哇.
难道 JS 还有什么隐藏功能么?
<script>
var a = ['oeidD', 'bRnDx', 'prototype', ''+'eB', 'push', 'shift'] // 有很长很长..300+个值
// console.log(a); // 注释掉后
(function (b, c) {
console.log(b); // 上面注释掉后 打印的是 undefined..取消注释则正常打印
var d = function (e) {
console.log(e)
while (--e) {
b['push'](b['shift']()); // 这是什么用法? 这段理解不了.但是网站上可以运行,进死循环.. b 是一个数组的哇.
console.log(e)
}
};
d(++c);
}(a, 6));
</script>