0
我發現在示例代碼下面的模式從Ch 11 of Eloquent Javascript:爲什麼要從頭到尾對數組進行切片?
array.slice(0, array.length - 1)
我的問題是爲什麼你會從切開它的一個數組的開始到結束?
這裏是我找到該模式的示例代碼。見右圖中間的argNames
聲明(我包括一個-->
在有問題的行:
specialForms["fun"] = function(args, env) {
if (!args.length)
throw new SyntaxError("Functions need a body");
function name(expr) {
if (expr.type != "word")
throw new SyntaxError("Arg names must be words");
return expr.name;
}
-->var argNames = args.slice(0, args.length - 1).map(name);
var body = args[args.length - 1];
return function() {
if (arguments.length != argNames.length)
throw new TypeError("Wrong number of arguments");
var localEnv = Object.create(env);
for (var i = 0; i < arguments.length; i++)
localEnv[argNames[i]] = arguments[i];
return evaluate(body, localEnv);
};
};
它基本上只是返回的副本數組。在這種情況下,它看起來不是必需的,因爲'map'返回無論如何,一個新的陣列。 – 2014-10-31 15:36:59