Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 10, 2022 04:02 pm GMT

Learn JavaScript the right way with this beginner's cheat sheet

Table of contents

  1. Fundamentals
  2. Variables
  3. Data Types
  4. Operators
  5. Functions
  6. Array
  7. Loops
  8. If-Else
  9. Strings
  10. Regular Expression
  11. Data Transformation
  12. Dealing with Dates in JavaScript
  13. Document Object Model (DOM) in JavaScript
  14. JavaScript Numbers & Math
  15. Events
  16. Error
  17. Working With Browser

1. JavaScript Fundamentals

Here are the basics on how to add JavaScript to your website.

  • In HTML code, JavaScript is written as follows:

Adding JavaScript code to an HTML page requires it to be enclosed within the <script> tag as shown below:

<script type = "text/javascript">//JavaScript coding can be done inside this tag</script>

Using this input, the browser can correctly identify and execute the code.

  • Including external JavaScript files in an HTML file:

It is also possible to create a separate JavaScript file and include it within our HTML file.

Keeping different types of code separate will result in better-organized files, and different kinds of codes can be kept isolated from one another.

We can, for example, include our JavaScript code in our HTML file in the following manner if our JavaScript code is in the file script.js:

<script src="script.js"></script>
  • Including Comments:

Leaving comments in your code helps other people understand what you're doing or reminds you if you've forgotten something.
Note: To prevent the browser from trying to execute them, they must be properly marked.

In JavaScript you have two different options:

Single-line comments Whenever you want to include a comment that is limited to a single line, precede it with //
Multi-line comments If you want to include a long comment between several lines, wrap it in /* and */ to avoid it being executed

2. JavaScript Variables

JavaScript variables are simply storage locations named by their names.

Thus, we can use them in our JavaScript codes as stand-in values through which we can perform various operations.

There are three ways to use variables in JavaScript:
var The most common variable. It can be reassigned but only accessed within a function. with var move to the top when the code is executed.

var x = 140; //  variable x can be reassigned a new value and also redeclared

const Cannot be reassigned and are not accessible until they appear in a program.

const x = 5; // variable x cannot be reassigned a new value or redeclared

let Like const, the let variable can be reassigned but not re-declared.

let x = 202; // variable x cannot be redeclared but can be reassigned a new value

3. JavaScript Data Types

Variables in JavaScript can store a variety of values and data. You use the equals to "=" operator to assign values to JavaScript variables. JavaScript has the following data types:

  • Numbers: These can either be real numbers or integers.
var id = 50
  • Variables: Unlike a fixed value, a variable data type does not have a fixed value.
var x
  • Text (strings): Strings are the most basic types of JavaScript data.
var demoString = "Hello! World"
  • Operations: JavaScript variables can be assigned operations.
var mul = 10*9
  • Boolean Values:True or false are the only two types of Boolean values.
var booleanValue = true
  • Constant numbers: These data types have a constant value.const
l = 8.8
  • JavaScript objects: These are containers for properties that have names. JavaScript objects have methods and members.
var name = {name:"Jon Snow", id:"AS123"}

FlowChartDataType

4. JavaScript Operators

Having variables allows you to perform various types of operations on them. Operators allow you to do this.

There are 4 types of Operators

  • Fundamental Operators:
OperatorDescription
+Addition
-Subtraction
*Multiplication
/Division
(...)Grouping operator, operations within brackets are executed earlier than those outside
%Modulus (remainder )
++Increment numbers
--Decrement numbers
  • Bitwise Operators:
OperatorDescription
&AND statement
~NOT
^XOR
<<Left shift
>>Right shift
>>>Zero fill right shift
  • Comparison Operators:
OperatorDescription
==Equal to
===Equal value and equal type
!=Not equal
!==Not equal value or not equal type
>Greater than
<Less than
>=Greater than or equal to
<=Less than or equal to
?Ternary operator
  • Logical Operators:
OperatorDescription
&&Logical and
!Logical not

5. JavaScript Functions

The JavaScript function is a block of code that performs a particular task. They look like this:

function nameOfTheFunction(parameterOne, parameterTwo, parameterThree, parameterFour,....,parameterN) {   // Job or Task of the function }
  • Function for outputting dataFunctions are commonly used to output data. There are several options for the output:
FunctionDescription
alert()Output data in an alert box in the browser window
confirm()Opens up a yes/no dialog and returns true/false
console.log()Writes information to the browser console, good for debugging purposes
document.write()Write directly to the HTML document
prompt()Creates a dialogue for user input
  • Global FunctionsGlobal functions are functions built into every browser capable of running JavaScript.
FunctionDescription
decodeURI()Decodes a Uniform Resource Identifier (URI) created by encodeURI or similar
decodeURIComponent()Decodes a URI component
encodeURI()Encodes a URI into UTF-8
encodeURIComponent()Same but for URI components
eval()Evaluates JavaScript code represented as a string
isFinite()Determines whether a passed value is a finite number
isNaN()Determines whether a value is NaN or not
Number()Returns a number converted from its argument
parseFloat()Parses an argument and returns a floating-point number
parseInt()Parses its argument and returns an integer

6. JavaScript Arrays

An array is a special variable, which can hold more than one value:

const cars = ["Saab", "Volvo", "BMW"];
  • Array Methods:

Which can be used to perform various types of operations.

MethodsDescription
pop()This method is used for removing the last element of an array.
push()This method is used for adding a new element at the very end of an array.
concat()This method is used for joining various arrays into a single array.
reverse()This method is used for reversing the order of the elements in an array.
shift()This method is used for removing the first element of an array.
slice()This method is used for pulling a copy of a part of an array into a new array.
splice()This method is used for adding elements in a particular way and position.
toString()This method is used for converting the array elements into strings.
unshift()This method is used for adding new elements at the beginning of the array.
valueOf()This method is used for returning the primitive value of the given object.
indexOf()This method is used for returning the first index at which a given element is found in an array.
lastIndexOf()This method is used for returning the final index at which a given element appears in an array.
join()This method is used for combining elements of an array into one single string and then returning it.
sort()This method is used for sorting the array elements based on some condition.

An array is a special variable, which can hold more than one value:

const cars = ["Saab", "Volvo", "BMW"];

7. JavaScript Loops

Almost all programming languages include loops. It allows you to run blocks of code indefinitely with different values:

  • for loop: JavaScript's most common method for creating loops.
for (initialization of the loop variable; condition checking for the loop; updation after the loop) {   // code to be executed in loop}
  • while loop: Determines when a loop should run. // Initialization of the loop variable is done before the while loop begins
while(condition checking for the loop){// 1. code to be executed in loop// 2. updation of the loop variable}
  • do-while loop: Similar to the while loop, it runs at least once and checks whether there is a condition to run it again at the end. // Initialization of the loop variable is done before the do-while loop begins
do{// 1. code to be executed in loop// 2. updation of the loop variable}while(condition checking for the loop);

When it comes to loops, there are two important statements:

Continue statement: If certain conditions are met, skip sections of the loop.
break statement: Exit the cycle when a specified condition is met.

8. JavaScript If-Else

If-else is used in JavaScript to execute a block of codes conditionally. These are used to set conditions for your code block to run. There are situations where certain blocks of code are executed, and there are situations where they are not.

if (condition){   // Executes this block if   // condition is true}else{   // Executes this block if   // condition is false}

9. JavaScript Strings

In JavaScript, strings are used to represent text that does not perform a function but can be displayed.

var Name = "John Cena";

In this case, John Cena is the string.

The following are all the escape sequences in JavaScript, as well as methods that JavaScript provides for strings:

  • Escape CharactersUsing single or double quotes, strings are marked in JavaScript. Special characters are needed for quotation marks in a string:
CharacterDescription
\'Single quotes
\"Double quotes
Horizontal tab
\vVertical tab
\Backslash
\bBackspace
\fForm feed

Newline
\rCarriage return
  • String methods: Strings can be worked with in many different ways:
MethodDescription
charAt()Returns a character at a specified position inside a string
charCodeAt()Gives you the Unicode of a character at that position
concat()Concatenates (joins) two or more strings into one
fromCharCode()Returns a string created from the specified sequence of UTF-16 code units
indexOf()Provides the position of the first occurrence of a specified text within a string
lastIndexOf()Same as indexOf() but with the last occurrence, searching backward
match()Retrieves the matches of a string against a search pattern
replace()Find and replace specified text in a string
search()Executes a search for a matching text and returns its position
slice()Extracts a section of a string and returns it as a new string
split()Splits a string object into an array of strings at a specified position
substr()Similar to slice() but extracts a substring depending on a specified number of characters
substring()Also similar to slice() but cant accept negative indices
toLowerCase()Convert strings to lower case
toUpperCase()Convert strings to upper case
valueOf()Returns the primitive value (that has no properties or methods) of a string object

10. JavaScript Regular Expression

Strings can be matched by regular expressions, which are search patterns. They can be used for text search and text replacement.

  • Pattern Modifiers
PatternDescription
eEvaluate replacement
iPerform case-insensitive matching
gPerform global matching
mPerform multiple line matching
sTreat strings as a single line
xAllow comments and whitespace in the pattern
UUngreedy pattern
  • Brackets
OperatorDescription
[abc]Find any of the characters between the brackets
[^abc]Find any character which is not in the brackets
[0-9]Used to find any digit from 0 to 9
[A-z]Find any character from uppercase A to lowercase z
(ab
  • Metacharacters
OperatorDescription
.Find a single character, except newline or line terminator
\wWord character
\W
\dA digit
\DA non-digit character
\sWhitespace character
\SNon-whitespace character
\bFind a match at the beginning/end of a word
\BA match not at the beginning/end of a word
\0NUL character

A new line character
\fForm feed character
\rCarriage return character
Tab character
\vVertical tab character
\xxxThe character specified by an octal number xxx
\xddCharacter specified by a hexadecimal number dd
\uxxxxThe Unicode character specified by a hexadecimal number XXXX
  • Quantifiers
OperatorDescription
n+Matches any string that contains at least one n
n*Any string that contains zero or more occurrences of n
n?A string that contains zero or one occurrence of n
n{X}String that contains a sequence of X ns
n{X,Y}Strings that contain a sequence of X to Y ns
n{X,}Matches any string that contains a sequence of at least X ns
n$Any string with n at the end of it
^nString with n at the beginning of it
?=nAny string that is followed by a specific string n
?!nString that is not followed by a specific string ni

11. Data Transformation

'Data transformation' is the conversion of one format to another. Using higher-order JavaScript functions, you can transform data by taking two or more functions as inputs and returning a function as a consequence. Map(), filter(), and reduce() are all higher-order functions that take a function as input.

  • Map()By calling a specific function on each element of a parent array, JavaScript's map() method creates an array. Iterating over an array and calling functions on every element is accomplished using
map(), a non-mutating method.var arr = [10,20,30];var triple  = arr.map(x => x * 3);triple; // [30,60,90]
  • filter()With arr.filter(), a new array is generated that consists only of those elements in a given array that meet a given set of conditions and criteria.
var arr = [13,40,47];var odd = arr.filter(x => x % 2);odd; // [13,47]
  • Reduce()When used in JavaScript, the arr.reduce() method reduces a given array to a single value by running a function provided for each value (from left-to-right), and storing the output in an accumulator.
var arr = [10,20,30];var counter = 0;let answer = arr.reduce((accumulator, value) => value + accumulator, counter);console.log(answer) // answer = 10 + 20 + 30 = 60

12. Dealing with Dates in JavaScript

Dealing with Dates in JavaScript
You can also work with and modify dates and time with JavaScript. This is the next chapter in the JavaScript cheat sheet.

  • Setting Dates
MethodsDescription
Date()Creates a new date object with the current date and time
Date(2017, 5, 21, 3, 23, 10, 0)Create a custom date object.
Date("2017-06-23")Date declaration as a string
  • Pulling Date and Time Values
PropertiesDescription
getDate()Get the day of the month as a number (1-31)
getDay()The weekday as a number (0-6)
getFullYear()Year as a four-digit number (yyyy)
getHours()Get the hour (0-23)
getMilliseconds()The millisecond (0-999)
getMinutes()Get the minute (0-59)
getMonth()Month as a number (0-11)
getSeconds()Get the second (0-59)
getTime()Get the milliseconds since January 1, 1970
getUTCDate()The day (date) of the month in the specified date according to universal time (also available for day, month, full year, hours, minutes etc.)
parseParses a string representation of a date and returns the number of milliseconds since January 1, 1970
  • Set Part of a Date
PropertiesDescription
setDate()Set the day as a number (1-31)
setFullYear()Sets the year (optionally month and day)
setHours()Set the hour (0-23)
setMilliseconds()Set milliseconds (0-999)
setMinutes()Sets the minutes (0-59)
setMonth()Set the month (0-11)
setSeconds()Sets the seconds (0-59)
setTime()Set the time (milliseconds since January 1, 1970)
setUTCDate()Sets the day of the month for a specified date according to universal time (also available for day, month, full year, hours, minutes etc.)

13. Document Object Model (DOM) in JavaScript

A website's code is organized into Document Object Models (DOMs). JavaScript allows you to build and alter HTML elements (called nodes) in many different ways.

  • Node Properties
PropertiesDescription
attributesReturns a live collection of all attributes registered to an element
baseURIProvides the absolute base URL of an HTML element
childNodesGives a collection of an elements child nodes
firstChildReturns the first child node of an element
lastChildThe last child node of an element
nextSiblingGives you the next node at the same node tree level
nodeNameReturns the name of a node
nodeTypeReturns the type of a node
nodeValueSets or returns the value of a node
ownerDocumentThe top-level document object for this node
parentNodeReturns the parent node of an element
previousSiblingReturns the node immediately preceding the current one
textContentSets or returns the textual content of a node and its descendants
  • Node Methods
MethodsDescription
appendChild()Adds a new child node to an element as the last child node
cloneNode()Clones an HTML element
compareDocumentPosition()Compares the document position of two elements
getFeature()Returns an object which implements the APIs of a specified feature
hasAttributes()Returns true if an element has any attributes, otherwise false
hasChildNodes()Returns true if an element has any child nodes, otherwise false
insertBefore()Inserts a new child node before a specified, existing child node
isDefaultNamespace()Returns true if a specified namespaceURI is the default, otherwise false
isEqualNode()Checks if two elements are equal
isSameNode()Checks if two elements are the same node
isSupported()Returns true if a specified feature is supported on the element
lookupNamespaceURI()Returns the namespace URI associated with a given node
lookupPrefix()Returns a DOMString containing the prefix for a given namespace URI if present
normalize()Joins adjacent text nodes and removes empty text nodes in an element
removeChild()Removes a child node from an element
replaceChild()Replaces a child node in an element
  • Element Methods
MethodsDescription
getAttribute()Returns the specified attribute value of an element node
getAttributeNS()Returns string value of the attribute with the specified namespace and name
getAttributeNode()Gets the specified attribute node
getAttributeNodeNS()Returns the attribute node for the attribute with the given namespace and name
getElementsByTagName()Provides a collection of all child elements with the specified tag name
getElementsByTagNameNS()Returns a live HTMLCollection of elements with a certain tag name belonging to the given namespace
hasAttribute()Returns true if an element has any attributes, otherwise false
hasAttributeNS()Provides a true/false value indicating whether the current element in a given namespace has the specified attribute
removeAttribute()Removes a specified attribute from an element
removeAttributeNS()Removes the specified attribute from an element within a certain namespace
removeAttributeNode()Takes away a specified attribute node and returns the removed node
setAttribute()Sets or changes the specified attribute to a specified value
setAttributeNS()Adds a new attribute or changes the value of an attribute with the given namespace and name
setAttributeNode()Sets or changes the specified attribute node
setAttributeNodeNS()Adds a new namespaced attribute node to an element

14. JavaScript Numbers & Math

Mathematical functions and constants can also be performed in JavaScript.

  • Number Properties
PropertiesDescription
MAX_VALUEThe maximum numeric value representable in JavaScript
MIN_VALUESmallest positive numeric value representable in JavaScript
NaNThe Not-a-Number value
NEGATIVE_INFINITYThe negative Infinity value
POSITIVE_INFINITYPositive Infinity value
  • Number Methods
MethodsDescription
toExponential()Returns the string with a rounded number written as exponential notation
toFixed()Returns the string of a number with a specified number of decimals
toPrecision()String of a number written with a specified length
toString()Returns a number as a string
valueOf()Returns a number as a number
  • Math Properties
PropertiesDescription
EEulers number
LN2The natural logarithm of 2
LN10Natural logarithm of 10
LOG2EBase 2 logarithm of E
LOG10EBase 10 logarithm of E
PIThe number PI
SQRT1_2Square root of 1/2
SQRT2The square root of 2
  • Math Methods
MethodDescription
abs(x)Returns the absolute (positive) value of x
acos(x)The arccosine of x, in radians
asin(x)Arcsine of x, in radians
atan(x)The arctangent of x as a numeric value
atan2(y,x)Arctangent of the quotient of its arguments
ceil(x)Value of x rounded up to its nearest integer
cos(x)The cosine of x (x is in radians)
exp(x)Value of Ex
floor(x)The value of x rounded down to its nearest integer
log(x)The natural logarithm (base E) of x
max(x,y,z,...,n)Returns the number with the highest value
min(x,y,z,...,n)Same for the number with the lowest value
pow(x,y)X to the power of y
random()Returns a random number between 0 and 1
round(x)The value of x rounded to its nearest integer
sin(x)The sine of x (x is in radians)
sqrt(x)Square root of x
tan(x)The tangent of an angle

15. JavaScript Events

Events are things that can happen to HTML elements and are performed by the user. The programming language can listen for these events and trigger actions in the code. No JavaScript cheat sheet would be complete without them.

  • Mouse
PropertiesDescription
onclickThe event occurs when the user clicks on an element
oncontextmenuUser right-clicks on an element to open a context menu
ondblclickThe user double-clicks on an element
onmousedownUser presses a mouse button over an element
onmouseenterThe pointer moves onto an element
onmouseleavePointer moves out of an element
onmousemoveThe pointer is moving while it is over an element
onmouseoverWhen the pointer is moved onto an element or one of its children
onmouseoutUser moves the mouse pointer out of an element or one of its children
onmouseupThe user releases a mouse button while over an element
  • Keyboard
PropertiesDescription
onkeydownWhen the user is pressing a key down
onkeypressThe moment the user starts pressing a key
onkeyupThe user releases a key
  • Frame
PropertiesDescription
onabortThe loading of a media is aborted
onbeforeunloadEvent occurs before the document is about to be unloaded
onerrorAn error occurs while loading an external file
onhashchangeThere have been changes to the anchor part of a URL
onloadWhen an object has loaded
onpagehideThe user navigates away from a webpage
onpageshowWhen the user navigates to a webpage
onresizeThe document view is resized
onscrollAn elements scrollbar is being scrolled
onunloadEvent occurs when a page has unloaded
  • Form
PropertiesDescription
onblurWhen an element loses focus
onchangeThe content of a form element changes (for , and )
onfocusAn element gets focus
onfocusinWhen an element is about to get focus
onfocusoutThe element is about to lose focus
oninputUser input on an element
oninvalidAn element is invalid
onresetA form is reset
onsearchThe user writes something in a search field (for )
onselectThe user selects some text (for and )
onsubmitA form is submitted
  • Drag
PropertiesDescription
ondragAn element is dragged
ondragendThe user has finished dragging the element
ondragenterThe dragged element enters a drop target
ondragleaveA dragged element leaves the drop target
ondragoverThe dragged element is on top of the drop target
ondragstartUser starts to drag an element
ondropDragged element is dropped on the drop target
  • Clipboard
PropertiesDescription
oncopyUser copies the content of an element
oncutThe user cuts an elements content
onpasteA user pastes the content in an element
  • Media
PropertiesDescription
onabortMedia loading is aborted
oncanplayThe browser can start playing media (e.g. a file has buffered enough)
oncanplaythroughThe browser can play through media without stopping
ondurationchangeThe duration of the media changes
onendedThe media has reached its end
onerrorHappens when an error occurs while loading an external file
onloadeddataMedia data is loaded
onloadedmetadataMetadata (like dimensions and duration) are loaded
onloadstartThe browser starts looking for specified media
onpauseMedia is paused either by the user or automatically
onplayThe media has been started or is no longer paused
onplayingMedia is playing after having been paused or stopped for buffering
onprogressThe browser is in the process of downloading the media
onratechangeThe playing speed of the media changes
onseekedUser is finished moving/skipping to a new position in the media
onseekingThe user starts moving/skipping
onstalledThe browser is trying to load the media but it is not available
onsuspendThe browser is intentionally not loading media
ontimeupdateThe playing position has changed (e.g. because of fast forward)
onvolumechangeMedia volume has changed (including mute)
onwaitingMedia paused but expected to resume (for example, buffering)
  • Animation
PropertiesDescription
animationendA CSS animation is complete
animationiterationCSS animation is repeated
animationstartCSS animation has started
  • Other
PropertiesDescription
transitionendFired when a CSS transition has completed
onmessageA message is received through the event source
onofflineThe browser starts to work offline
ononlineThe browser starts to work online
onpopstateWhen the windows history changes
onshowA element is shown as a context menu
onstorageA Web Storage area is updated
ontoggleThe user opens or closes the element
onwheelMouse wheel rolls up or down over an element
ontouchcancelScreen-touch is interrupted
ontouchendUsers finger is removed from a touch-screen
ontouchmoveA finger is dragged across the screen
ontouchstartA finger is placed on the touch-screen

16. JavaScript Errors

When working with JavaScript, different errors can occur. There are several ways of handling them:

PropertiesDescription
tryLets you define a block of code to test for errors
catchSet up a block of code to execute in case of an error
throwCreate custom error messages instead of the standard JavaScript errors
finallyLets you execute code, after try and catch, regardless of the result
  • Error Name Values

JavaScript also has a built-in error object. It has two properties:

PropertiesDescription
nameSets or returns the error name
messageSets or returns an error message in a string from

The error property can return six different values as its name:

MethodsDescription
EvalErrorAn error has occurred in the eval() function
RangeErrorA number is out of range
ReferenceErrorAn illegal reference has occurred
SyntaxErrorA syntax error has occurred
TypeErrorA type error has occurred
URIErrorAn encodeURI() error has occurred

17. JavaScript Working With Browser

Besides HTML elements, JavaScript is also able to take into account the user browser and incorporate its properties into the code.

  • Window Properties
MethodsDescription
closedChecks whether a window has been closed or not and returns true or false
defaultStatusSets or returns the default text in the status bar of a window
documentReturns the document object for the window
framesReturns all elements in the current window
historyProvides the History object for the window
innerHeightThe inner height of a windows content area
innerWidthThe inner width of the content area
lengthFind out the number of elements in the window
locationReturns the location object for the window
nameSets or returns the name of a window
navigatorReturns the Navigator object for the window
openerReturns a reference to the window that created the window
outerHeightThe outer height of a window, including toolbars/scrollbars
outerWidthThe outer width of a window, including toolbars/scrollbars
pageXOffsetNumber of pixels the current document has been scrolled horizontally
pageYOffsetNumber of pixels the document has been scrolled vertically
parentThe parent window of the current window
screenReturns the Screen object for the window
screenLeftThe horizontal coordinate of the window (relative to the screen)
screenTopThe vertical coordinate of the window
screenXSame as screenLeft but needed for some browsers
screenYSame as screenTop but needed for some browsers
selfReturns the current window
statusSets or returns the text in the status bar of a window
topReturns the topmost browser window
  • Window Methods
MethodsDescription
alert()Displays an alert box with a message and an OK button
blur()Removes focus from the current window
clearInterval()Clears a timer set with setInterval()
clearTimeout()Clears a timer set with setTimeout()
close()Closes the current window
confirm()Displays a dialogue box with a message and an OK and Cancel button
focus()Sets focus to the current window
moveBy()Moves a window relative to its current position
moveTo()Moves a window to a specified position
open()Opens a new browser window
print()Prints the content of the current window
prompt()Displays a dialogue box that prompts the visitor for input
resizeBy()Resizes the window by the specified number of pixels
resizeTo()Resizes the window to a specified width and height
scrollBy()Scrolls the document by a specified number of pixels
scrollTo()Scrolls the document to specified coordinates
setInterval()Calls a function or evaluates an expression at specified intervals
setTimeout()Calls a function or evaluates an expression after a specified interval
stop()Stops the window from loading
  • Screen Properties
PropertiesDescription
availHeightReturns the height of the screen (excluding the Windows Taskbar)
availWidthReturns the width of the screen (excluding the Windows Taskbar)
colorDepthReturns the bit depth of the color palette for displaying images
heightThe total height of the screen
pixelDepthThe color resolution of the screen in bits per pixel
widthThe total width of the screen

Original Link: https://dev.to/prajwal056/learn-javascript-the-right-way-with-this-beginners-cheat-sheet-3m85

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To