一、Optional Chaining
在javaScript中,对象的属性链访问,很容易因为某一个属性不存在出现 Cannot read property 'xxx' of undefined的问题,那么Optional Chaining就添加了?.操作符,它会先判断前面的值,如果undefined或者null,就结束后面的调用,直接返回undefined;
1.1 访问深度嵌套的属性
const obj = {
1.2 调用深层嵌套的函数
const obj = {
1.3 构造深层嵌套的类
const obj = {
1.4 安装使用
安装:
npminstall--save-dev @babel/plugin-proposal-optional-chaining
配置.babelrc:
{
二、随机生成字母和数组的组合
Math.random().toString(36).substr(2);
三、转换布尔值
const isTrue = !0;
四、转换数字
constnumber = '10';
constnumber = '10';
五、替代Math.pow
console.log(Math.pow(2, 3));
六、快速浮点数转整数
console.log(10.9 | 0); // 10
console.log(~~10.9);
七、数组降维度
二维数组
let arr = [ [1], [2], [3] ];
多维数组
let arrMore = [1, 2, [3], [[4]]];
八、判断小数是否相等
console.log(0.1 + 0.2 === 0.3); // false
functionequal(number1, number2) {
九、判断变量是否是数组
1.instanceof
PS:instanceof和constructor判断的变量,必须在当前页面声明。例如:父页面是一个框架,框架中引入一个页面(子页面),在子页面中申明的array,并将其复制给父元素的一个变量,这时instanceof和constructor判断该变量,将返回false。----------------------------------------------------------------------------------------------------------------- 原因:array是复合类型。在传递的过程中,仅仅是引用地址的传递。每个页面的array原生对象引用的地址是不一样的,在子页面中声明的array,所对应的构造函数,是子页面的array对象,在父页面进行判断时,使用的并不是子页面的array。
十、数组占位
let array = Array(3).fill('');
十一、数组去重多重方式
11.1 Set(最常用)
Array.prototype.unique = function(){
11.2 Map
Array.prototype.unique = function() {
11.3 Array.prototype.indexOf()
Array.prototype.unique = function() {
11.4 Array.prototype.includes()
Array.prototype.unique = function(){
11.5 Array.prototype.reduce()
Array.prototype.unique = function() {
十二、短路运算(&& ||)
使用&&将返回第一个条件为假的值。如果每个操作数的计算值都为true,则返回最后一个计算过的表达式。
let one = 1, two = 2, three = 3;
使用||将返回第一个条件为真的值。如果每个操作数的计算结果都为false,则返回最后一个计算过的表达式。
let one = 1, two = 2, three = 3;
十三、过滤空值
let result1 = [1, 2, 0, undefined, null, false, ''].filter(Boolean);
十四、创建空对象
let dict = Object.create(null);
十五、合并对象
const person = { name: 'David Walsh', gender: 'Male' };
十六、字符串去空格
String.prototype.trim = function(){returnthis.replace(/^\s+|\s+$/g, "");};
十七、对象转换为数组
var argArray = Array.prototype.slice.call(arguments);
十八、逗号操作符
var a = 0;
十九、 localStorage.getItem('key') === localStorage.key
来源: 沉末_评论。
localStorage.setItem('item', 1);
二十、从一堆文本中获取手机号
来源: 飞蛾扑火评论。
([\s,,、]*)?((手机|联系方式|电话|联系人)号?)?(号码)?([、::\s]*)?(?:[\s((]*?\+?(86)?[\s))]*)(1\d{2})(?:[-\s]*)(\d{4})(?:[-\s]*)(\d{4})(?=\D|$)
二十一、整数变量交换
来源: 快乐的仲子评论。
let a = 10;
二十二、整数变量交换
var a = 2;
评论出你的“奇人异巧”,让大家都学习。
源自:https://juejin.im/post/5dd4a4015188252a18737535
声明:文章著作权归作者所有,如有侵权,请联系小编删除。
感谢 · 转发欢迎大家留言
本文分享自微信公众号 - web前端学习圈(web-xxq)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。