广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript代码优雅,简洁的编写技巧总结
  • 769
分享到

JavaScript代码优雅,简洁的编写技巧总结

摘要

1. 强类型检查 用===代替 == // 如果处理不当,它会极大地影响程序逻辑。这就像,你想向左走,但由于某种原因,你向右走 0 == false // true 0 === fa

1. 强类型检查

用===代替 ==

// 如果处理不当,它会极大地影响程序逻辑。这就像,你想向左走,但由于某种原因,你向右走
0 == false // true
0 === false // false
2 == "2" // true
2 === "2" // false
// 例子
const value = "500";
if (value === 500) {
console.log(value);
// 条件不成立,不会进入
}

if (value === "500") {
console.log(value);
// 条件成立,会进入
}

2.变量

用知名其意的方式为变量命名,通过这种方式,当一个人看到它们时,易于搜索和理解。
不好的方式:

let daysSLV = 10;
let y = new Date().getFullYear();

let ok;
if (user.age > 30) {
ok = true;
}

好的方式:
const MAX_AGE = 30;
let daysSinceLastVisit = 10;
let currentYear = new Date().getFullYear();

...

const isUserOlderThanAllowed = user.age > MAX_AGE;

不要在变量名中添加额外的不需要的单词。

不好的方式:
let nameValue;
let theProduct;

好的方式:
let name;
let product;

不要简写变量上下文。
不好的方式:
const users = ["John", "Marco", "Peter"];
users.forEach(u => {
doSomething();
doSomethingElse();
// ...
// ...
// ...
// ...
// 当上面代码很多的时候 ,这 `u` 是什么鬼
reGISter(u);
});

好的方式:
const users = ["John", "Marco", "Peter"];
users.forEach(user => {
doSomething();
doSomethingElse();
// ...
// ...
// ...
// ...
register(user);
});

不要添加不必要的上下文。
不好的方式:
const user = {
userName: "John",
userSurname: "Doe",
userAge: "28"
};

...

user.userName;

好的方式:
const user = {
name: "John",
surname: "Doe",
age: "28"
};

...

user.name;

3. 函数

使用长而具有描述性的名称。 考虑到函数表示某种行为,函数名称应该是动词或短​​语,用以说明其背后的意图以及参数的意图。 函数的名字应该说明他们做了什么。
不好的方式:

function notif(user) {
// implementation
}

好的方式:
function notifyUser(emailAddress) {
// implementation
}

避免使用大量参数。 理想情况下,函数应该指定两个或更少的参数。 参数越少,测试函数就越容易,参数多的情况可以使用对象。
不好的方式:

function getUsers(fields, fromDate, toDate) {
// implementation
}

好的方式:
function getUsers({ fields, fromDate, toDate }) {
// implementation
}

getUsers({
fields: ['name', 'surname', 'email'],
fromDate: '2019-01-01',
toDate: '2019-01-18'
});

使用默认参数替代 || 操作

不好的方式:
function createShape(type) {
const shapeType = type || "cube";
// ...
}

好的方式:
function createShape(type = "cube") {
// ...
}

一个函数应该只做一件事,不要在一个函数中执行多个操作。

不好的方式:
function notifyUsers(users) {
users.forEach(user => {
const userRecord = database.lookup(user);
if (userRecord.isVerified()) {
notify(user);
}
});
}

好的方式:
function notifyVerifiedUsers(users) {
users.filter(isUserVerified).forEach(notify);
}

function isUserVerified(user) {
const userRecord = database.lookup(user);
return userRecord.isVerified();
}

使用Object.assign设置对象默认值。

不好的方式:
const shapeConfig = {
type: "cube",
width: 200,
height: null
};

function createShape(config) {
config.type = config.type || "cube";
config.width = config.width || 250;
config.height = config.height|| 250;
}

createShape(shapeConfig);

好的方式:
const shapeConfig = {
type: "cube",
width: 200
// Exclude the 'height' key
};

function createShape(config) {
config = Object.assign(
{
type: "cube",
width: 250,
height: 250
},
config
);

...
}

createShape(shapeConfig);

不要使用标志作为参数,因为它们告诉函数做的比它应该做的多。

不好的方式:
function createFile(name, isPublic) {
if (isPublic) {
fs.create(`./public/${name}`);
} else {
fs.create(name);
}
}

好的方式:
function createFile(name) {
fs.create(name);
}

function createPublicFile(name) {
createFile(`./public/${name}`);
}

不要污染全局变量。 如果需要扩展现有对象,请使用ES类和继承,而不是在原生对象的原型链上创建函数。

不好的方式:
Array.prototype.myFunc = function myFunc() {
// implementation
};

好的方式:
class SuperArray extends Array {
myFunc() {
// implementation
}
}

4. 条件

避免使用反面条件。

不好的方式:
function isUserNotBlocked(user) {
// implementation
}

if (!isUserNotBlocked(user)) {
// implementation
}

好的方式:
function isUserBlocked(user) {
// implementation
}

if (isUserBlocked(user)) {
// implementation
}

使用条件简写。这可能微不足道,但值得一提。仅对布尔值使用此方法,并且如果你确信该值不会是undefined 或null的,则使用此方法。

不好的方式:
if (isValid === true) {
// do something...
}

if (isValid === false) {
// do something...
}

好的方式:
if (isValid) {
// do something...
}

if (!isValid) {
// do something...
}

尽可能避免条件句,而是使用多态性和继承。

不好的方式:
class Car {
// ...
getMaximumSpeed() {
switch (this.type) {
case "Ford":
return this.someFactor() + this.anotherFactor();
case "Mazda":
return this.someFactor();
case "McLaren":
return this.someFactor() - this.anotherFactor();
}
}
}

好的方式:
class Car {
// ...
}

class Ford extends Car {
// ...
getMaximumSpeed() {
return this.someFactor() + this.anotherFactor();
}
}

class Mazda extends Car {
// ...
getMaximumSpeed() {
return this.someFactor();
}
}

class McLaren extends Car {
// ...
getMaximumSpeed() {
return this.someFactor() - this.anotherFactor();
}
}

5. 类

class 是javascript中新的语法糖。一切工作就像以前的原型,只是它现在看起来不同,你应该更喜欢他们比ES5普通功能。

不好的方式:
const Person = function(name) {
if (!(this instanceof Person)) {
throw new Error("Instantiate Person with `new` keyWord");
}

this.name = name;
};

Person.prototype.sayHello = function sayHello() {  };

const Student = function(name, school) {
if (!(this instanceof Student)) {
throw new Error("Instantiate Student with `new` keyword");
}

Person.call(this, name);
this.school = school;
};

Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;
Student.prototype.printSchoolName = function printSchoolName() {  };

好的方式:
class Person {
constructor(name) {
this.name = name;
}

sayHello() {

}
}

class Student extends Person {
constructor(name, school) {
super(name);
this.school = school;
}

printSchoolName() {

}
}

使用链接。许多库(如Jquery和Lodash)都使用这种模式。在类中,只需在每个函数的末尾返回this就可以将更多的该类方法链接到它上。

不好的方式:
class Person {
constructor(name) {
this.name = name;
}

setSurname(surname) {
this.surname = surname;
}

setAge(age) {
this.age = age;
}

save() {
console.log(this.name, this.surname, this.age);
}
}

const person = new Person("John");
person.setSurname("Doe");
person.setAge(29);
person.save();

好的方式:
class Person {
constructor(name) {
this.name = name;
}

setSurname(surname) {
this.surname = surname;
// Return this for chaining
return this;
}

setAge(age) {
this.age = age;
// Return this for chaining
return this;
}

save() {
console.log(this.name, this.surname, this.age);
// Return this for chaining
return this;
}
}

const person = new Person("John")
.setSurname("Doe")
.setAge(29)
.save();

总结

这只是改进代码的一小部分。一般生活入,这里所说的原则是人们通常不遵守的原则。他们尝试着去做,但出于各种原因,就没有坚持下去。也许在项目开始时,代码是简洁的,但是当要在截止日期前完成时,这些原则常常被忽略,并被转移到“TODO”或“REFACTOR”部分。在这一点上,你的客户更希望您在最后期限之前完成任务,而不是编写简洁的代码。

更多关于如何优雅,简洁的编写JavaScript代码技巧请查看下面的相关文章

--结束END--

本文标题: JavaScript代码优雅,简洁的编写技巧总结

本文链接: https://www.lsjlt.com/news/169441.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript代码优雅,简洁的编写技巧总结
    1. 强类型检查 用===代替 == // 如果处理不当,它会极大地影响程序逻辑。这就像,你想向左走,但由于某种原因,你向右走 0 == false // true 0 === fa...
    99+
    2022-11-13
    JavaScript代码编写技巧 编写优雅 简洁的JavaScript代码 优雅的JavaScript代码
  • 一些让Python代码简洁的实用技巧总结
    目录前言1. 使用Lambda来修改Pandas数据框中的值2. 使用f-string来连接字符串3. 用Zip()函数对多个列表进行迭代4. 使用列表理解法5. 对文件对象使用wi...
    99+
    2022-11-12
  • 编写更简洁React代码的技巧有哪些
    这篇文章主要介绍“编写更简洁React代码的技巧有哪些”,在日常操作中,相信很多人在编写更简洁React代码的技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”编写更简洁React代码的技巧有哪些”的疑...
    99+
    2023-07-04
  • 编写更简洁Python代码的技巧有哪些
    这篇文章主要介绍“编写更简洁Python代码的技巧有哪些”,在日常操作中,相信很多人在编写更简洁Python代码的技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”编写更简洁Python代码的技巧有哪些...
    99+
    2023-06-16
  • 写简洁java代码的技巧有哪些
    小编给大家分享一下写简洁java代码的技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 定义配置文件信息有时候我们为了统一管理会把一些变量放到 yml...
    99+
    2023-06-29
  • 10 个编写更简洁React代码的实用小技巧
    本篇文章给大家整理分享 10 个编写更简洁 React 代码的实用小技巧,希望对大家有所帮助!1. JSX 简写如何将 true 值传递给给定的 props?【相关推荐:Redis视频教程、编程视频】在下面的示例中,使用 prop show...
    99+
    2023-05-14
    前端 JavaScript React.js
  • 21 个简洁的 JavaScript单行代码技巧
    JavaScript 发展至今已经变得越来越强大,且广泛用于前端和后端开发。 作为一名前端程序员,不断的学习精进技巧,了解JS的最新发展也是非常必要的,而简洁的一行代码示例就是很好的方法。 今天,我们有 21 个JavaScript单行代码...
    99+
    2023-10-21
    okhttp
  • 分享几个写简洁java代码的小技巧
    目录1.定义配置文件信息2.用@RequiredArgsConstructor代替@Autowired3.不要返回null4.ifelse5.减少controller业务代码6.将字...
    99+
    2022-11-13
  • 一文总结5个JavaScript代码优化技巧
    const target = {}; const handler = { get: (target, prop) => { console.log(`获取属性:${prop}`); return...
    99+
    2023-05-14
    javascript
  • 总结分享10个超棒的JavaScript简写技巧
    目录1.合并数组2.合并数组(在开头位置)3.克隆数组4.解构赋值5.模板字面量6.For循环7.箭头函数8.在数组中查找对象9.将字符串转换为整数10.短路求值补充几点编码习惯1....
    99+
    2022-11-13
  • 编写JavaScript代码的小技巧有哪些
    小编给大家分享一下编写JavaScript代码的小技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1 Array.inc...
    99+
    2022-10-19
  • 编写现代JavaScript代码的小技巧有哪些
    这篇文章主要介绍“编写现代JavaScript代码的小技巧有哪些”,在日常操作中,相信很多人在编写现代JavaScript代码的小技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
  • 编写干净的 Python 代码的优秀技巧
    ​让我们来谈谈编写干净的 Python 代码的一些最佳技巧吧!变量/函数名称我经常做的一个非常常见的问题是变量/函数的命名,基本上,如果你的变量/函数看起来像这样:var1 = 12 var2 = 'tom' var3 = 1234引用这些...
    99+
    2023-05-14
    Python 技巧
  • JavaScript中最常用的代码简写技巧有哪些
    这篇文章给大家分享的是有关JavaScript中最常用的代码简写技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、三元操作符当想写if…else语句时,使用三元操作符来...
    99+
    2022-10-19
  • JavaScript里最常用的十种代码简写技巧是什么
    这篇文章主要介绍“JavaScript里最常用的十种代码简写技巧是什么”,在日常操作中,相信很多人在JavaScript里最常用的十种代码简写技巧是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaS...
    99+
    2023-06-25
  • 高质量Python代码编写的5个优化技巧
    如今我使用 Python 已经很长时间了,但当我回顾之前写的一些代码时,有时候会感到很沮丧。例如,最早使用 Python 时,我写了一个名为 Sudoku 的游戏(GitHub地址:https://gith...
    99+
    2022-06-04
    高质量 代码 技巧
  • 一定有你会用到的JavaScript一行代码实用技巧总结
    目录引言一、日期处理1. 检查日期是否有效2. 计算两个日期之间的间隔3. 查找日期位于一年中的第几天4. 时间格式化二、字符串处理1. 字符串首字母大写2. 翻转字符串3. 随机字...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作