Angularjs socket.io service

angularjs, angularjs-directive, angularjs-scope, node.js, socket.io

Solution

This is where javascript betrays its aversion to unnamed variables. The variable `arguments` refers to an array of arguments that are passed in to a function. What you see there is angular code grabbing an array of the function's arguments and passing them to apply.

function(myVar1, myVar2){
    console.log(arguments.length);
}

Would output `2`.

Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments

Problem

Hi I'm building an angularjs service that will use websockets via socket.io to communicate with backend (node.js). I found a snippet of code online but I don't quite understand how it works. Specifically on the lines under "var args = arguments". Help? 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); } }); }) } }; }); ```

Original source