First of all, you need to understand that React is one of the numerous JavaScript libraries which defines the way the apps are written. It is responsible for setting clear rules that determine the development process (in the specific case on React - strictly UI-related), while “plain” JS is an independent programming language that operates much more freely.
Some of the major differences between the two fall into 3 broader categories and are as follows:
User Interface: React allows for simplified implementation of dynamically rendered UI. Thanks to this optimisation, applications run smoothly regardless of their complexity.
Functionality distribution: Plain JS doesn’t set any specific requirements as to how to split UI components, so with time some elements get covered by the additional layers of code and may be harder to edit. In turn, React forces developers to split their code into independent components, which makes complicated applications easier to understand and edit.
Data storage: In order to find each dataset stored in DOM (Document Object Model) with JavaScript, a developer would have to manually extract that value, which tends to get tedious as the codebase grows. React, however, uses “controlled components” that interact with a so-called “virtual DOM” instead of an actual one, which in practice means storing data straight in JS code.
As you can see, most differences are strictly development-related, which doesn’t imply much variations from a business owner’s perspective. However, you need to take into account that each developer’s experience results in the overall time it takes to complete the project, which is why it’s always advisable to choose a frontend framework based on your team’s personal competences.