简单的程序代码大全(教你编写一个简单的代码)

学习一种语言或框架的核心概念,从而高效编写代码,这是个不错的想法。然而,如果你想快速学习新东西,必然需要阅读冗长的说明,这会很麻烦。因此,本文将简单地解释一些核心概念帮助你更轻松地去理解它们。这些概念将改变你的编码方式,助你写出高质代码,成为高效的开

学习一种语言或框架的核心概念,从而高效编写代码,这是个不错的想法。然而,如果你想快速学习新东西,必然需要阅读冗长的说明,这会很麻烦。因此,本文将简单地解释一些核心概念帮助你更轻松地去理解它们。

这些概念将改变你的编码方式,助你写出高质代码,成为高效的开发人员。基于在编码领域的受欢迎度,笔者挑选出了下面这些概念。一起开始吧!

1.解构

从对象中提取属性有几种方法,解构就是其中之一。它有助于清晰地提取对象的属性、从数组中赋值或将对象的属性赋给变量。之所以优于其他方法,是因为它允许在单个语句中提取多个属性,可以从嵌套对象中访问属性,还可以在属性不存在时为其赋默认值。

比如以下对象。

const profile = {
name: \"Harry\",
age: 15,
country: \"UK\"
};

运用解构,可以在单个语句中提取此对象的一个或多个属性。

const { name, age } = profile; console.log(name, age);
// Harry 15

给属性赋值是解构的另一种用法,不存在的属性将返回指定默认值。

const { name, age, school = \"Hogwarts\" } =profile;console.log(school);
// Hogwarts

此外,数组解构也很流行,可以为变量分配默认值,在变量之间交换值等。在引入ES6之前,还不存在可以一次提取所有数据的机制。因此,解构是一个工具概念,可以让代码更纯净。

2.Spread语法

将spread运算符用于可迭代对象(如数组和字符串),它有助于将可迭代对象扩展为单个元素。扩展运算符的语法为三个点( … )。

例如,假设一个函数需要三个参数,而我们有一个包含三个元素的数组。通过使用spread语法,可以将数组传递给这个函数,它将迭代数组,并将元素分配给函数的相关参数。

function sum (a, b, c) {
return a + b + c;
}const numbers = [1, 2, 3];console.log(sum(...numbers));
// 6

在ES6中引入spread运算符之前,使用数组将参数传递给函数要复杂得多。

spread语法的另一种用法是连接数组。假设有两个数组,如下所示:

const vegetables = [\"carrot\", \"pumpkin\"];
const fruits = [\"apple\", \"pear\"];

在引入spread语法前,必须使用array.concat方法来组合这些数组。然而,使用spread语法,数组组合变得非常容易。

const newArray = [ ...vegetables, ...fruits ];console.log(newArray);
// [\"carrot\", \"pumpkin\", \"apple\",\"pear\"]

此外,还可以使用spread运算符创建具有完全相同内容但引用不同的对象副本。

图源:unsplash

3. Rest语法

rest语法使用规范与spread语法相同。区别在于,spread会复制所有内容,而如果想要检索所有剩余元素时,就可以使用rest语法。

const numbers = [1, 3, 2, 6, 8];const [1, 3, ...rest] =numbers;console.log(rest);
// [2, 6, 8]

4.数组方法

JavaScript数组方法为数组中的数据转换提供了一种干净简洁的解决方案。在众多可用的数组方法中,我将介绍4种最重要的方法,即map, filter, reduce 和 some。

· Map

此方法返回一个数组,其中数组中的每个元素都根据指定函数进行转换。比如,如果要将数组的每个元素乘以2,就可以使用map方法,在单个语句中完成这项工作,而不需要任何复杂循环。此外,map方法不会改变原始数据。

const array = [1, 2, 3];
const mapped = array.map(element => element * 2);console.log(mapped);
// [2, 4, 6]
· Filter

此方法返回一个元素数组,其中函数返回true。比如,如果需要从数组中检索偶数,则可以按如下方式筛选数组。

const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(element => element % 2 ===0);console.log(evenNumbers);
// [2, 4, 6]
· Reduce

此方法根据函数指定的值进行累积。

const arr = [1, 2, 3, 4, 5, 6];
const reduced = arr.reduce((total, current) => total +current);console.log(reduced);
// 21

这三种方法是数组中功能强大的数据转换方法,可以得到非常清晰易读的代码。使用这些方法可以编写更简单、更短的代码,而不必担心循环或分支。这些数组方法对于JavaScript开发人员来说非常重要,它可以减少代码、减少人工操作并提高可读性。

· Some

如果数组中的某些元素通过了指定函数的测试,则此方法返回true。如果没有元素与该函数相对应,则此方法返回false:

const array = [1, 2, 3, 4, 5];const isEven = (element) => element % 2=== 0;console.log(array.some(isEven));
// true

与在数组中迭代查找结果的传统方法相反,该方法在查找符合特定条件数组中的元素时非常有用。

图源:unsplash

5. 值与引用变量分配

如何给变量赋值是每个JavaScript开发人员都应该知道的一个最重要的概念。如果不知道这一点,就可能会给变量赋值并无意中更改掉了,这将导致代码中出现意外错误。

JavaScript总是按变量的值分配变量。但是主要有两种赋值类型:如果赋值是JavaScript基元类型(boolean、null、undefined、string、number、bigint和symbol),则实际值被赋给变量。但如果分配的值是Array, Function,或Object,则分配的是内存中对象的引用,而不是实际值。

一起来看下面几个例子,加深理解。考虑变量name1和name2:

let name1 = \"John\";
let name2 = name1;

变量name2被分配为变量name1,因此,这些变量属于基元类型,所以实际值(“John”)被分配给这两个变量。因此,这两个变量可以看作是两个值相同的独立变量。由于这个原因,重新分配第二个变量不会影响第一个变量。这称为按值分配变量。

name2 = \"Peter\";console.log(name1, name2);
// \"John\", \"Peter\"

另一种方法是通过引用分配变量。如果变量类型是array, object,或 function,则在内存中为变量分配一个引用,而不是实际值。来看看以下对象赋值。

let obj1 = { name: \"Lucy\" }
let obj2 = obj1;

通过该赋值,变量obj2获得与obj1相同的内存引用。因此,改变obj2 也会影响obj1,因为它们不再被视为单独的变量。这两个变量在内存中有相同的引用。

obj2.name = \"Mary\";console.log(obj1);
// { name: \"Mary\" }console.log(obj2);
// { name: \"Mary\" }

如果需要在内存中创建具有不同引用的相同对象的副本,可以使用spread运算符。以这种方式改变新创建的对象不会影响第一个对象,因为它们在内存中有不同的引用。

let object1 = { name: \"Lucy\" };
let object3 = {...object1}object3.name = \"Anne\";console.log(object1);
// { name: \"Lucy\" }console.log(object3);
// { name: \"Anne\" }

掌握这些概念将助你编写更好、更简洁的代码。以上讲到的这些核心概念,你了解了嘛?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/26012.html

(0)
nan
上一篇 2021-09-17
下一篇 2021-09-17

相关推荐

  • 车牌识别功能介绍(智能车牌识别系统讲解)

    车牌识别技术是一项对静态图像进行车牌号码、车牌颜色自动识别的模式识别技术,当然对于车辆动态视频也可以进行识别,但是对车辆的动态视频识别原理跟静态图像识别原理是一样,我们都知道视频是有图片的一帧一帧组成的,车牌识别算法也是对车辆的动态视频中抽取十到十五

    2021-10-01
    0
  • mac下怎么制作win10启动盘(制作苹果启动u盘)

    不管你使用的是macOS还是Windows10,电脑出现启动问题是很正常的,原因有很多种,包括(但不限于)文件损坏、硬件故障和错误更新等。如果意外发生在苹果电脑上,可以使用带有安装文件的macOS启动U盘来修复它。这正是在电脑正常工作时

    2021-12-11 科技
    0
  • 迪丽热巴金主太子爷是谁(迪丽热巴金主天涯扒皮)

    迪丽热巴近几年在娱乐圈是人气非常高的,因此自从她走红之后就有不少的人在猜测她背后的金主是谁,网上也流传着各种说法,那么迪丽热巴到底是谁在捧她呢,迪丽热巴金主太子爷是谁,迪丽热巴金主天涯扒皮,那么接下来大家就随久久派小编一起了解看看~迪丽热巴金主太子爷是谁迪丽

    2021-09-01
    0
  • 日本人为啥不挖十三陵(十三陵灵异事件真实揭露)

    要说到北京出名的陵墓那么就是明十三陵了,不少人其实对于一些比较大的陵墓棕会觉得会有些奇怪的事情要发生,而且大家也注意到在日本侵略中国时候却没有挖十三陵,那么日本人为啥不挖十三陵,十三陵灵异事件真实揭露是怎么样的,那么接下来大家就随久久派小编一起了解看看~日本人

    2021-09-06
    0
  • word导入pdf文件(Word转PDF文件最简单的三个方法)

    如何将pdf文件快速插入到word文档内,让软件帮助解决,转化成图片,一张一张地插入到word文档内:这样太麻烦了!今天小编就教大家一个简单的方法,让大家不在苦恼!一,工具pdf文件word文档电脑二、解决步骤1.首先鼠标在桌面右键新建一个word文

    2021-09-05 科技
    0
  • 2022每年什么节气天气转暖(今年是不是立春一过就暖和了)

    每年什么节气天气转暖是大家冬季闲聊时最爱讨论的,尤其是家中没有供暖的地区更是希望冬天快开过去,要不这滋味简直是一言难尽,下面小编就同大家一起看看今年是不是立春一过就暖和了。2022每年什么节气天气转暖虽说立春后冬天就正式

    2021-09-09
    0

发表回复

登录后才能评论