Home >Web Front-end >JS Tutorial >Function sharing that enables JavaScript to break apart
This article mainly introduces you to the use of functional programming to break away from JavaScript. The editor thinks it is quite good. Now I will share it with you and give you a reference. Let’s follow the editor to take a look, I hope it can help everyone.
About DHTML
DHTML is the abbreviation of Dynamic HTML, which is dynamic HTML (an application under the Standard Universal Markup Language), which is relatively traditional static HTML. A concept of making web pages in Chinese. The so-called Dynamic HTML (DHTML for short) is not actually a new language. It is just an integration of HTML, CSS and client-side scripts, that is, a page includes html+css+javascript (or other client-side scripts). ), where css and client scripts are written directly on the page instead of linking to related files.
At that time, JavaScript evolved slowly and was mainly used in form validation. Therefore, it was not as popular as it is today and did not attract much attention. It can be said to be just an icing on the cake. You need to ensure that your application can still be used normally after JavaScript is disabled in the browser. Later, frameworks appeared one after another: jQuery, Knockout, Angular, React, Vue, etc.
Similarly, JavaScript is also evolving at an accelerated pace. We have only been using ES6 for a while, and now people have almost skipped ES7 and started talking about ES8.
And, we have many alternatives, such as TypeScript, CoffeScript, ClojureScript, ELM, etc.
We have been overwhelmed by too many frameworks and languages, and it is difficult to keep track of and master them all.
Wrong Route
As JavaScript matured, the concepts of object-oriented programming (OOP) filtered in, and I used to love it.
I started trying all the different ways to create classes, and I finally got to use inheritance correctly. I said to myself: JavaScript is starting to really look like a language!
However, it was not until many years later that I discovered that OOP is the worst design introduced by JavaScript!
I try to bring my understanding of C# to JavaScript. I was full of expectations at first, but later I found it was too complicated and brain-burning.
This is mainly because JavaScript’s prototypal inheritance is different from C#. I am used to writing elegant code like console.log(this) every day. But what now? If I accidentally don't follow the rules, it will give me nightmares. Private methods and private values must have an underscore in front of their names, and even closures must be used to ensure privacy.
Therefore, not only OOP has caused many problems, but also the addition of OOP has brought many new problems.
Functional Programming
I didn’t understand it at first. I can read and understand this functional code, but I don't know why! Eventually, I forced myself to learn it.
Functional languages gave me a new perspective and allowed me to look at programming in a completely different way.
It will feel unnatural at first and it will take time to adapt. All definitions are based on functions, the values cannot be changed, and there is no state. I use functional thinking to solve problems. Because I was unfamiliar with it, it took me longer to learn. Gradually, I became proficient in using functional methods to program. And, I also know the underlying meaning of all code written this way.
My code is more concise and easy to reuse. Gradually, the language features I used to use disappeared from the code, and my code looked like it was written in another language. Am I still using JavaScript?
1. No longer use var
I replaced var with const. Through functional design, my functions are pure. The value of a variable will not be changed again, also to ensure that it will not be operated on.
I will check the code to ensure that every var, even let, and all declarations use const.
2. There is no for loop
When learning a programming language, we will learn the for loop at the beginning. But since learning functional programming, I changed the for loop to use filter, map and reduce. For those that require some extra calculations, I would use recursion or a third-party library like lazy.js.
There is no for loop in my code now. If you see it, tell me and I will eliminate it.
3. if can also be simplified
I started to stop writing large chunks of code inside if. I extracted the logic inside and put it in a separate function. In this way, we can simplify if using the ternary operator (a?b:c).
There are almost no if statements in my code nowadays. To make it easier for other developers to understand my code, I rarely use it.
4. Say goodbye to switch
Similarly, I don’t like to use switch, but I am looking for a functional way of writing.
I also like to use Ramda's cond operator instead of swtich.
5. Don’t worry about this anymore
Yes, you heard it right! We can also eliminate this completely.
Functional JavaScript allows you to completely abandon the use of annoying this
Now there are only data and functions, and even data is just a special expression of the function, you no longer need this. I started to understand objects as states and functions in functional languages. I don't even need to bind state or functions to objects, like in OOP.
Object-oriented design is not necessary
Looking back now, I find that the complexity brought by object-oriented programming is really unnecessary. I can implement the same functionality and accomplish the same tasks using functional languages. Moreover, the code is lighter because there is no need to pass these complex objects around. There are only data and functions, and because functions are not bound to objects, they are easier to reuse. I no longer need to worry about all the problems that traditional prototypal inheritance brings. JavaScript is not designed well.
The lack of private, public, internal or protected access controllers for JavaScript is no longer an issue. Access controllers are designed to solve problems due to the introduction of object-oriented programming. In functional JavaScript, these problems no longer exist.
Summary
My code looks completely different now. It contains a lot of pure functions, which I made into different ES6 modules. These functions can be used to build more complex functions. A large number of functions are very simple one-line lambda expressions.
Now my thinking about software has changed: the input is a data stream, and then the program acts on the data stream to perform various operations on the data, and then returns new data.
The impact of functional design on programming languages is ubiquitous. LINQ in C# is the best example. Similarly, Java 8 also introduces functional language features.
Related recommendations:
Detailed introduction to XML behavior (behavior)-new DHTML?
The above is the detailed content of Function sharing that enables JavaScript to break apart. For more information, please follow other related articles on the PHP Chinese website!