JS 6个实用小知识(第一更)

1,031 阅读3分钟

「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

前言

大家好,今天给大家带来JS的一些实用小知识,希望大家喜欢,一起来看看吧。

正文

函数默认值

在日常开发中,我们经常可能会用短路运算符来设置默认值,但是有一些坑,比如: x || 2, 如果x为0的时候还是会使用2,因此我们需要额外处理0的情况。

ES6的方式则靠谱多了:

const randomNum = (x=100) => {
    return Math.floor(Math.random() * x)
}

// console.log(randomNum()) // 0 ~ 99随机整数
// console.log(randomNum(10)) // 0 ~ 9随机整数

&& 和 ||

可能你遇到过当第一个条件为正确的时候执行另外一个函数,那么我们可以这样操作:

const check = true

const handler = () => console.log('我不知道做什么')

// 正常我们应该这样操作:
if(check) handler();

// if条件我们可以简写为:
check && handler()

接下里我们看看||:

const check = true

const handler1 = () => console.log('我不知道做什么1')
const handler2 = () => console.log('我不知道做什么2')

// 我们可以简写为:(当check/handler1都失败的时候执行handler2)
check && handler1() || handler2()

嵌套多层的解构

单层的解构,相信大家都会了,那么我们来看看嵌套多层解构:

const people = {
    girl: {
        age: 18,
        weight: 100
    },
    boy: {
        age: 18,
        weight: 150
    }
}

// 如果你是男孩,那么你怎么获取到gril的age/weight呢?你可以这样操作:
const { girl: { age, weight } } = people
console.log(age, weight)  // 18  100
console.log(girl)  // Uncaught ReferenceError: girl is not defined


// 上方的写法,你只能看到age/weight,但是你不知道是girl或者boy?
// 因此你可以这样操作:
const { girl: { age, weight }, girl, boy } = people
console.log(age, weight)  // 18  100
console.log(girl)  // {age: 18, weight: 100}

数字分隔符

可能你在开发的过程中,有时候会涉及到很大的数字显示问题,例如: const money = 9999999999999

一眼看上去,自己都不知道这是几位,这个时候我们可以这样操作:

const money = 9_999_999_999_999

console.log(money) // 9999999999999

随机字符串

如果你想获取6位的随机字符串,你能想到的方法是?


two hours later~

toString大家了解么?

它有个参数radix, w3c上描述是:可选。规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。

也就是说当radix 等于36的时候,就会把数字表示为由0-9, a-z组成的的36进制字符串

因此,我们可以用一句话来实现这个问题:

console.log(Math.random().toString(36).substr(28)); // a6vasu

获取dom的方法

html中id都会被全局ID变量所引用

// 假如html中有这样一段: <div id="dom"></div>

// 那么我们可以这样获取
console.log(dom) // <div id="dom"></div>

结语

这一次先分享这么多,剩下的抽时间再给大家分享~