嗨,我正在构建一个 angularjs服务,它将通过socket.io使用websockets与后端(node.js)进行通信.我在网上找到了一段代码,但我不太明白它是如何工作的.特别是在“var args = arguments”下的行上.救命?
angularjs_service.js
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
});
这就是javascript背叛了对未命名变量的厌恶.变量arguments引用传递给函数的参数数组.你看到的是角度代码抓取函数参数的数组并将它们传递给apply.
function(myVar1, myVar2){
console.log(arguments.length);
}
输出2.
资料来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments
