Javascript

Guowei Lv

2 minute read

For JavaScript beginners (I envy all of you because your brains are not damaged by this yet), () can be a huge confusion. Example 1 const createPerson = name => {firstname: name}; console.log(createPerson("Guowei")); Of course it logs undefined. Let’s ask JavaScript what was it thinking when it executed the code. Me: Hi, JavaScript. JavaScript: Hi! Me: What the heck has happened? Where is my returned object? JavaScript: Wait. What return?

Guowei Lv

10 minute read

null and undefined null is a language keyword and undefined is a predefined global object. undefined represents a system level, unexpected or error-like absence of value. nullrepresents program-level, normal or expected absence of value. When writing programs yourself always use null. global object When the JavaScript interpreter starts, it creates a new global object and gives it an initial set of properties. In client-side JavaScript, the window object serves as the global object.

How to Setup ESLint and Prettier in VSCode For React Project

How to setup ESLint with Prettier in VSCode for React Project

1 minute read

Create a React App: npx create-react-app my-app Install ESLint and Prettier in VSCode. In the project directory, run npm i prettier eslint-config-prettier eslint-plugin-prettier -D In User Settings (ctrl + ,), put in the following: { "editor.formatOnSave": true, "[javascript]": { "editor.formatOnSave": false }, "eslint.autoFixOnSave": true, "eslint.alwaysShowStatus": true, "prettier.disableLanguages": [ "js" ], "files.autoSave": "onFocusChange" } Create an .eslintrc file: { "extends": ["react-app", "plugin:prettier/recommended"] } If your project is not under git, run git init.

Building a JavaScript Development Environment

How to setup a JS development environment in 2018

14 minute read

This blog post is a summary of the excellent Pluralsight Course by Cory House. Editor and Configuration First of all, editor of choice here is surprise surprise VS Code. I’m actually happly surprised that Erich Gamma is behind this. Use EditorConfig to manage, well, editor configurations. Tabs VS spaces, etc. Note that VS Code need to install a plugin for it to work. The example .editorconfig file: root = true [] indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true charset = utf-8 [.

JavaScript and Prototype Design Pattern

Is Javascript's prototypal inheritance borrowed from prototype design pattern?

Guowei Lv

1 minute read

Javascript has prototypal inheritance. For example let’s create a constructor function: function Person(firstname, lastname) { this.firstname = firstname; this.lastname = lastname; } Person.prototype = { fullname: function() { return this.firstname + ' ' + this.lastname; } }; var bob = new Person("Bob", "Doe"); console.log(bob.fullname()); This is very similar to the Prototype Pattern. Whenever we want a new object, we always create it out of some prototype object. I find that it is easier to understand the JS’s prototype inheritance when comparing it with the Prototype Pattern.