Ali
Ali

Reputation: 407

how to initialize a parameter in javascript function when i define the function

i have a defined a function with a parameter in javascript, and i don't know how to initialize it's parameter, any one help me. the code is bellow

<br/>Enter a number:
<input type="text" id="txt1" name="text1">
<p>Click the button to see the result</p>
<button onclick="myFunction(5)">show result</button>
<br/>
<p id="demo"></p>
<script>
  function myFunction(param) {
    alert(param);
    var z = param;
    var y = document.getElementById("txt1").value;
    var x = +y + +z;
    document.getElementById("demo").innerHTML = x;
  }
</script>

the problem which i have is: if i send an argument to the function as <button onclick="myFunction(5)">show result</button> it works, but if i don't send any argument it is not working and the result is NaN. now i want to know how i can initialize the parameter wen i define the function? as we have in php function myFunction(param=0)

Upvotes: 7

Views: 7833

Answers (5)

Mahmoud Zakria
Mahmoud Zakria

Reputation: 11

Starting from ES2015

function myFunction(param1 = '', param2 = 0, param3 = false, param4 = {}, param5 = []) {}

Upvotes: 1

basilikum
basilikum

Reputation: 10528

All answers so far check the value of param to determine if it has been set or not. In most cases that works fine, but it doesn't cover cases in which you actually want to pass undefined to myFunction. Especially the often used pattern param = param || 0 will set param to 0 for all falsy values (0, false, "", null, undefined) that you pass to the function. So if you need to cover those cases as well and if you want to emulate the behavior of other languages as close as possible, you need to check arguments if param was actually set:

function myFunction(param) {
    if (arguments.length === 0) {
        param = 0;
    }
    console.log(param);
}

myFunction(0); //0
myFunction(1); //1
myFunction(""); //""
myFunction(null); //null
myFunction(undefined); //undefined
myFunction(false); //false
myFunction(); //0

Upvotes: 1

AmmarCSE
AmmarCSE

Reputation: 30557

Use param = param || 0; like

function myFunction(param) {
    param = param || 0;
    console.log(param);
    var z = param;
    var y = document.getElementById("txt1").value;
    var x = +y + +z;
    document.getElementById("demo").innerHTML = x;
  }

The above statement is saying set param to param if it is not falsey(undefined, null, false), otherwise set it to 0.

Upvotes: 5

Masoud Mustamandi
Masoud Mustamandi

Reputation: 498

whenever you do not initialize a value to a parameter javascript will consider it as undefined, so you can reap the benefit of this issue and do it like:

function myFunction(param)
     {

       param = typeof param !== 'undefined' ? param : 0;

     }

hope it would be useful.

Upvotes: 4

user_4685247
user_4685247

Reputation: 2985

you'll have to do it like this:

function foo(a, b)
 {
   a = typeof a !== 'undefined' ? a : 42;
   ...
 }

Upvotes: 2

Related Questions