I am new to the world of Javascript and am tinkering with writing very basic functions and stumbled upon the example below by accident and am unsure why it works when I am not passing a parameter when the function demands it.
Sample function
function myfunction(x) {
alert("This is a sample alert");
}
Now if I call the function myfunction();
I am presented with the alert. Why is that that I am able to call the function without any errors or warnings when I have not passed a parameter?
EDIT
I did not expect so many great answers and I am by no means in a position yet able to say which answer is the best so am I able to request people to suggest the best answer and I'll award the acceptance to that person.
Nothing will happen- meaning you won't get an error or a warning as passing the parameters in javascript is optional.
All the parameters that weren't "supplied" will have the undefined
value.
function foo(x, y, z){
//...
}
foo(1);
Inside the foo
function now:
function foo(x, y, z){
x === 1
y === undefined
z === undefined
}
You can even pass more arguments, like:
foo(1,2,3,4,5,7); // Valid!
You can know the amounts of parameters supplied by arguments.length
from inside the function.
function foo(x, y, z) {
console.log('x value: ' + x);
console.log('y value: ' + y);
console.log('z value: ' + z);
console.log('Arguments length: ' + arguments.length);
}
console.log('Zero parameters');
foo();
console.log('Four parameters');
foo(1, 2, 3, 4);
Example of useful function that handle any amount of parameters:
function max() {
var maxValue = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (maxValue < arguments[i]) {
maxValue = arguments[i];
}
}
return maxValue;
}
alert(max(1, 5, 7, 2, 88, 32, 44));