网站首页 > 基础教程 正文
前言
我一直在寻找提高效率的新方法。而且 JavaScript 总是能给人带来惊喜。
将 arguments 对象转换为数组
arguments 对象是函数内部可访问的类似数组的对象,其中包含传递给该函数的参数的值。
与其他数组不同,这里我们可以访问值并获得长度(length),但是不能在其上使用其他数组方法。
幸运的是,我们可以将其转换为常规数组:
var argArray = Array.prototype.slice.call(arguments);
对数组中的所有值求和
我一开始想到的是使用一个循环,但是那样会很浪费。
var numbers = [3, 5, 7, 2];
var sum = numbers.reduce((x, y) => x + y);
console.log(sum); // returns 17
条件短路
我们有以下代码:
if (hungry) {
goToFridge();
}
我们可以进一步简化代码,同时使用变量和函数:
hungry && goToFridge()
对条件使用或(OR)逻辑
我以前在函数开始时声明变量,只是为了避免在出现意外错误时遇到 undefined。
function doSomething(arg1){
arg1 = arg1 || 32; // if it's not already set, arg1 will have 32 as a default value
}
逗号运算符
逗号运算符(,)用来计算其每个操作数(从左到右)并返回最后一个操作数的值。
let x = 1;
x = (x++, x);
console.log(x);
// expected output: 2
x = (2, 3);
console.log(x);
// expected output: 3
使用 length 调整数组大小
你可以调整大小或清空数组。
var array = [11, 12, 13, 14, 15];
console.log(array.length); // 5
array.length = 3;
console.log(array.length); // 3
console.log(array); // [11,12,13]
array.length = 0;
console.log(array.length); // 0
console.log(array); // []
使用数组结构来交换值。
结构赋值语法是一种 JavaScript 表达式,可以将数组中的值或对象中的属性解包为不同的变量。
let a = 1, b = 2
[a, b] = [b, a]
console.log(a) // -> 2
console.log(b) // -> 1
随机排列数组中的元素
var list = [1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(list.sort(function() {
return Math.random() - 0.5
}));
// [4, 8, 2, 9, 1, 3, 6, 5, 7]
属性名称可以是动态的
你可以在声明对象之前分配一个动态属性。
const dynamic = 'color';
var item = {
brand: 'Ford',
[dynamic]: 'Blue'
}
console.log(item);
// { brand: "Ford", color: "Blue" }
过滤唯一值
对于所有 ES6 爱好者而言,我们可以使用带有 Spread 运算符的 Set 对象来创建一个仅包含唯一值的新数组。
const my_array = [1, 2, 2, 3, 3, 4, 5, 5]
const unique_array = [...new Set(my_array)];
console.log(unique_array); // [1, 2, 3, 4, 5]
总结
履行好自己的责任比提升效率要重要的多。
你的网站需要兼容所有浏览器。
你可以使用 Endtest或其他类似工具来确保兼容性。
https://endtest.io/
你还有其他 JavaScript 技巧或窍门要分享吗?
推荐JavaScript经典实例学习资料文章
《细品269个JavaScript小函数,让你少加班熬夜(一)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(二)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(三)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(四)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(五)「值得收藏」》
《细品269个JavaScript小函数,让你少加班熬夜(六)「值得收藏」》
《手把手教你7个有趣的JavaScript 项目-上「附源码」》
《手把手教你7个有趣的JavaScript 项目-下「附源码」》
《JavaScript 使用 mediaDevices API 访问摄像头自拍》
《一文彻底搞懂JavaScript 中Object.freeze与Object.seal的用法》
《可视化的 JS:动态图演示 - 事件循环 Event Loop的过程》
《可视化的 js:动态图演示 Promises & Async/Await 的过程》
《Pug 3.0.0正式发布,不再支持 Node.js 6/8》
《通过发布/订阅的设计模式搞懂 Node.js 核心模块 Events》
《「速围」Node.js V14.3.0 发布支持顶级 Await 和 REPL 增强功能》
《JavaScript 已进入第三个时代,未来将何去何从?》
《前端上传前预览文件 image、text、json、video、audio「实践」》
《深入细品 EventLoop 和浏览器渲染、帧动画、空闲回调的关系》
《推荐13个有用的JavaScript数组技巧「值得收藏」》
《36个工作中常用的JavaScript函数片段「值得收藏」》
《一文了解文件上传全过程(1.8w字深度解析)「前端进阶必备」》
《手把手教你如何编写一个前端图片压缩、方向纠正、预览、上传插件》
《JavaScript正则深入以及10个非常有意思的正则实战》
《前端开发规范:命名规范、html规范、css规范、js规范》
《100个原生JavaScript代码片段知识点详细汇总【实践】》
《手把手教你深入巩固JavaScript知识体系【思维导图】》
《一个合格的中级前端工程师需要掌握的 28 个 JavaScript 技巧》
《身份证号码的正则表达式及验证详解(JavaScript,Regex)》
《127个常用的JS代码片段,每段代码花30秒就能看懂-【上】》
《深入浅出讲解JS中this/apply/call/bind巧妙用法【实践】》
《干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)》
《面试中教你绕过关于 JavaScript 作用域的 5 个坑》
作者 | Zander Shirley
译者 | 王强
策划 | 小智
转发链接:https://mp.weixin.qq.com/s/QQp3GTUvnwn_cunmaqDwTg
- 上一篇: 前端 JavaScript 获取字符串中重复次数最多的字符
- 下一篇: 总结下js排序算法和乱序算法
猜你喜欢
- 2024-12-14 js数组方法笔记
- 2024-12-14 Cash:Javascript打造的Unix Shell
- 2024-12-14 如何找出爬取网站的来源IP?
- 2024-12-14 js-ES6 完全使用手册
- 2024-12-14 开发技巧汇总|对于imag.js你不知道的事
- 2024-12-14 JS基本数据类型BigInt
- 2024-12-14 JavaScript数组用法
- 2024-12-14 简单几步让你的 JS 写得更漂亮
- 2024-12-14 第29节 原型prototype-Javascript-零点程序员-王唯
- 2024-12-14 五十四、最基础的冒泡排序
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)