通过以下示例阅读书籍:
var system = require('system'),
args = system.args;
console.log('script name is: ' + args[0]);
if (args.length > 1) {
var restArgs = args.slice(1);
restArgs.forEach(function(arg, i) {
console.log('[' + (i + 1) + '] ' + arg);
});
} else {
console.log('No arguments were passed.');
}
phantom.exit();
我确实在google上搜索了切片功能。 但是我很困惑为什么slice(1)在这里可以分开args。 在网上搜索并说切片通常有2个args(arg1,可选的args2)
slice(1)如何在restArgs中存储? 另外.forEach(function(arg,i)...)在这里是如何工作的?
答案 0 :(得分:1)
正如您所说,这里是slice
语法:
arr.slice([begin[, end]])
因为结束参数是可选的,所以对slice(1)
的调用只会产生没有第一个arg的原始参数。
以下是forEach
语法:
arr.forEach(callback[, thisArg])
这基本上是数组中每个元素的for循环。
如果我们查看MDN documentation,我们会看到回调函数有三个参数:
您的代码使用restArgs.forEach(function (arg, i)
执行的操作是循环其余参数的每个元素并拉出每个元素。在此回调函数的主体中,您可以引用当前arg本身(带有arg
)和该arg的当前索引(带i
)。