Q:

Benefits of using call keyword to call a function in Javascript

In JavaScript, we can call a function in two ways:  
function f(message) { ... }
f.call(this, "test");

or just:  
f("test")

Except that we can specify the scope in the first case, is there any other advantage to using this syntax over the other one?

A:

You can pass a this object as you like/need. E.g.
[].slice.call("abcdef", 2) === ['c', 'd', 'e', 'f'];

or
var x = {hasOwnProperty:function() { return false; }, key:42};
x.hasOwnProperty('key'); // == false
{}.hasOwnProperty.call(x, 'key'); // true

You should take notice that call is not a keyword, but a method of Function.prototype.
Read:

Function.prototype.call
Function.prototype.apply

A:

Except that we can specify the scope in the first case

You can't "specify scope". Scope is set by how code is written, you can't dynamically change it other than to a limited extent using with. A function's this keyword has nothing to do with scope, it's always resolved as a local variable in the current execution context.

