DEV Community

Cover image for #Day30 - From Python to JavaScript - The Basics Part 3
Rahul Banerjee
Rahul Banerjee

Posted on • Originally published at realpythonproject.com

#Day30 - From Python to JavaScript - The Basics Part 3

In the last article, we discussed the following

  • Conditional Statements
  • Blocks
  • Comparison Operators
  • Logical Operators
  • Truthy and Falsy Values
  • Ternary Operators
  • Switch Cases

Today, we will be discussing the following

  • Function Definitions
  • Positional and Keyword/Named Parameters
  • Arrow Functions in Javascript

Function Definitions

In this section, we will discuss the basic way of defining functions in Python and JavaScript. We will be defining a function named func. It will simply calculate the sum of 10,20 and return the sum

Python

Below is the syntax for a function in Python

def functionName():
  '''
  SOME CODE
  '''
  pass
Enter fullscreen mode Exit fullscreen mode

Now let's define the function func we discussed earlier

def func():
  sum = 10 + 20
  return sum 


# Calling the function func
func()
Enter fullscreen mode Exit fullscreen mode

JavaScript

Below is the general syntax for a function

function functionName(){
  /*
  SOME CODE
  */
  pass
}
Enter fullscreen mode Exit fullscreen mode

Let's define the function func in javascript

function func(){
  let sum = 10 + 20
  return sum
}

// Caling the function func
func()
Enter fullscreen mode Exit fullscreen mode

Parameters

If you want to learn about Positional and Keyword Arguments, check out this article

Python

  • Python has support for default parameters and non-default parameters
  • Python can accept positional and keyword arguments
  • In Python, when calling a function, positional arguments CAN NOT follow keyword arguments
  • In Python, if we do not pass an argument for non-default parameters, Python will raise an exception
'''
Default Parameter
'''
def func1(num1 , num2 = 10):
  return num1 + num2 

print( func1(10) )   # OUTPUT: 20
print ( func1(1,1) ) # OUTPUT: 2  


'''
Positional and Keyword Arguments
'''
def func2(num1 , num2 , num3, num4):
  return num1 + num2 + num3 + num4

print( func2(10,10,num3=30,num4=5) )# OUTPUT: 55

print( func2(10,num2=10,10,num4=10) ) # ERROR

'''
Not passing an argument for non-default parameters
'''
print( func2(10,10,num3=30) )# OUTPUT: TypeError
Enter fullscreen mode Exit fullscreen mode

JavaScript

  • JavaScript has support for default parameters and non-default parameters
  • JavaScript can accept both positional and named arguments. Named arguments in JavaScript is similar to Keyword Arguments in Python
  • In JavaScript, when calling a function positional arguments can follow named arguments. However, you need to respect the order of the arguments and the parameters. We will discuss this below
  • In JavaScript, if you do not pass an argument for non-default parameters, the parameter will be set to undefined. Unlike Python, JavaScript doesn't return an error.
/*
  Default Parameters
*/
function func1(num1 , num2 = 10){
  return num1 + num2
}

console.log(func1(10)) // OUTPUT: 20
console.log(func1(1,1)) // OUTPUT: 2

/*
Not passing an argument for non-default parameters
*/
function func2(num1,num2,num3,num4){
  return num1+num2+num3+num4
}

console.log(func2(10,20,30)) // OUTPUT: Nan
Enter fullscreen mode Exit fullscreen mode

As mentioned above the order of the positional and named arguments doesn't matter but you should be careful while using them.

function func2(num1,num2,num3,num4){
  console.log("num1: " + num1)
  console.log("num2: " + num2)
  console.log("num3: " + num3)
  console.log("num4: " + num4)
}
Enter fullscreen mode Exit fullscreen mode

We will try passing positional and named arguments to the above function

func2(10,20,num3=30,num4=40)
/*
num1: 10
num2: 20
num3: 30
num4: 40
*/


func2(10,20,num3=30,40)
/*
num1: 10
num2: 20
num3: 30
num4: 40
*/
Enter fullscreen mode Exit fullscreen mode

But this is where it gets weird

func2(10,num3=30,20,40)
/*
num1: 10
num2: 30
num3: 20
num4: 40
*/
Enter fullscreen mode Exit fullscreen mode

Although, we explicitly set num3 to 30, inside the function num2 is set to 30, and num3 is set to 20. We need to respect the order of the parameters. If the order of the parameters is not followed, the parameters are set to the respective argument values (irrespective of if they are positional or named).

func2(10,num1=30,20,40)
/*
num1: 10
num2: 30
num3: 20
num4: 40
*/
Enter fullscreen mode Exit fullscreen mode

Arrow functions in JavaScript

Although not related, Python supports lambda functions, you can find more about them here

JavaScript supports arrow functions. It's just a cleaner version of defining functions. Below is a cheatsheet. The arrow is an equal sign(=) followed by a greater than sign (>)

EzuD2aoWEAI6OlW.jpeg

Top comments (0)