8个编写优秀JS代码的技巧和窍门(分享)

下面js教程栏目给大家介绍8个编写javascript代码的技巧和窍门。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

8个编写优秀JS代码的技巧和窍门(分享)

推荐教程:《JavaScript视频教程》

1. 生成指定区间内的数字

有时候需要创建在某个数字范围内的数组。比如在选择生日时。以下是最简单的实现方法。

let start = 1900,    end = 2000;[...new Array(end + 1).keys()].slice(start);// [ 1900, 1901, ..., 2000]// 也可以这样,但是大范围结果不稳定Array.from({ length: end - start + 1 }, (_, i) => start + i);

登录后复制

2. 把值数组中的值作为函数的参数

有时候我们需要先把值放到数组中,然后再作为函数的参数进行传递。使用 ES6 语法可以只凭借扩展运算符(…)就可以把值从数组中提取出来: [arg1,arg2] => (arg1,arg2)。

const parts = {  first: [0, 2],  second: [1, 3],};["Hello", "World", "JS", "Tricks"].slice(...parts.second);// ["World", "JS", "Tricks"]

登录后复制

这个技巧在任何函数中都适用,请继续看第 3 条。

3. 把值数组中的值作为 Math 方法的参数

当需要在数组中找到数字的最大或最小值时,可以像下面这样做:

// 查到元素中的 y 位置最大的那一个值const elementsHeight =  [...document.body.children].map(  el => el.getBoundingClientRect().y);Math.max(...elementsHeight);// 输出最大的那个值const numbers = [100, 100, -1000, 2000, -3000, 40000];Math.min(...numbers);// -3000

登录后复制

4. 展平嵌套数组

Array 有一个名为 Array.flat 的方法,它需要一个表示深度的参数来展平嵌套数组(默认值为 1)。但是如果你不知道深度怎么办,这时候只需要将 Infinity 作为参数即可。另外还有一个很好用的 flatMap 方法。

const arrays = [[10], 50, [100, [2000, 3000, [40000]]]];arrays.flat(Infinity);// [ 10, 50, 100, 2000, 3000, 40000 ]

登录后复制

5. 防止代码崩溃

如果在代码中存在不可预测的行为,后果是难以预料的,所以需要对其进行处理。

例如当你想要获取的属性为 undefined 或 null 时,会得到 TypeError 错误。

如果你的项目代码不支持可选链( optional chaining)的话,可以这样做:

const found = [{ name: "Alex" }].find(i => i.name === 'Jim');console.log(found.name);// TypeError: Cannot read property 'name' of undefined

登录后复制

可以这样避免

const found = [{ name: "Alex" }].find(i => i.name === 'Jim') || {};console.log(found.name);// undefined

登录后复制

不过这要视情况而定,对于小规模的代码进行处理完全没什么问题。不需要太多代码就可以处理它。

6. 传参的好方法

在 ES6 中可以把 模板字面量(Template literal) 当作是不带括号的函数的参数。这在进行格式化或转换文本的时非常好用。

const makeList = (raw) =>  raw    .join()    .trim()    .split("")    .map((s, i) => `${i + 1}. ${s}`)    .join("");makeList`Hello, WorldHello, World`;// 1. Hello// 2. World

登录后复制

7. 像变戏法一样交换变量的值

通过解构赋值语法,可以轻松地交换变量。

let a = "hello";let b = "world";// 错误 ❌a = bb = a// { a: 'world', b: 'world' }// 正确 ✅[a, b] = [b, a];// { a: 'world', b: 'hello' }

登录后复制

8. 遮蔽字符串

某些时候我们需要遮蔽字符串的一部分,当然不只是对密码做这种操作。下面代码中通过 substr(-3)  得到字符串的一部分,即从字符串末尾开始往前 3 个字符,然后再用你喜欢的字符填充剩余的位置(比如说用 *)

const password = "hackme";password.substr(-3).padStart(password.length, "*");// ***kme

登录后复制

结语

在编码时还需要保持代码整洁,平时注意积累在编码时所使到的技巧,并关注 JavaScript 的新增特性。

原文地址:https://dev.to/gigantz/9-javascript-tips-tricks-to-code-like-a-wizard-559i作者:Orkhan Jafarov译文地址:https://segmentfault.com/a/1190000030697379

更多编程相关知识,请访问:编程课程!!

以上就是8个编写优秀JS代码的技巧和窍门(分享)的详细内容,更多请关注【创想鸟】其它相关文章!

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2724290.html

(0)
上一篇 2025年3月7日 23:12:33
下一篇 2025年2月18日 06:41:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 了解ES6中的for … of循环和Iterable对象

    推荐教程:《JavaScript视频教程》 本文将研究 ES6 的 for … of 循环。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 旧方法 在过去,有两种方法可以遍历 javascript。 首先是经典…

    2025年3月7日
    200
  • JavaScript中var,let与const的区别是什么?

    区别:1、var声明的变量属于函数作用域,let和const声明的变量属于块级作用域;2、var存在变量提升现象,而let和const没有;3、var变量可以重复声明,而在同一块级作用域,let变量不能重新声明,const变量不能修改。 推…

    2025年3月7日
    200
  • JavaScript的三大组成部分是什么

    JavaScript的三大组成部分是:1、ECMAscript;2、文档对象模型DOM;3、浏览器对象模型BOM。其中,ECMAscript是javascript的核心,描述了语言的基本语法和数据类型。 JavaScript的三大组成部分是…

    2025年3月7日
    200
  • JavaScript charAt()方法是什么

    JavaScript charAt()方法是可返回指定位置的字符,语法为【stringObject.charAt(index)】,其中index表示字符串中某个位置的数字,即字符在字符串中的下标。 定义和用法 charAt() 方法可返回指…

    2025年3月7日
    200
  • 详解JS中的垃圾回收和内存泄漏

    程序的运行需要内存。只要程序提出要求,操作系统或者运行时就必须供给内存。所谓的内存泄漏简单来说是不再用到的内存,没有及时释放。为了更好避免内存泄漏,我们先介绍Javascript垃圾回收机制。 在C与C++等语言中,开发人员可以直接控制内存…

    2025年3月7日 编程技术
    200
  • 深入讨论JavaScript中Set对象如何让代码更快

    我确信有很多开发人员坚持使用基本的全局对象:数字,字符串,对象,数组和布尔值。对于许多用例,这些都是需要的。 但是如果想让你的代码尽可能快速和可扩展,那么这些基本类型并不总是足够好。 在本文中,我们将讨论JS 中Set对象如何让代码更快— …

    2025年3月7日
    200
  • javascript中substr和substring的区别是什么

    javascript中substr和substring的区别是:substr是从起始索引号开始提取指定长度的字符串;substring是提取字符串中两个指定索引号之间的字符。 区别介绍: (视频学习分享:javascript视频教程) su…

    2025年3月7日
    200
  • 你所不知道的JavaScript

    JavaScript栏目介绍一些必会操作。 和其他“圈子”里的同学们不一样,前端圈子里的同学们都很热衷于“手写xxx方法”,基本上每天在掘金里都可以看到类似的文章。但是,很多文章(不代表全部,无意冒犯)大都是囫囵吞枣、依葫芦画瓢,经不起推敲…

    2025年3月7日
    200
  • 同时去掉字符串左边和右边空格的函数是什么?

    同时去掉字符串左边和右边空格的函数是“trim()”;trim()函数可用于删除字符串的头尾空白符,空白符包括:空格、制表符tab、换行符等其他空白符等,语法“string.trim()”。 本教程操作环境:windows10系统、java…

    2025年3月7日
    200
  • javascript如何改变原数组

    javascript改变原数组的方法:1、push往数组里面增加东西;2、pop把数组最后一位元素剪切出去;3、unshit是往数组第一位元素前面添加元素;4、shit从数组前面的第一位元素开始删除。 本教程操作环境:windows10系统…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论