「这是我参与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(2, 8)); // a6vasu
获取dom的方法
html中id都会被全局ID变量所引用
// 假如html中有这样一段: <div id="dom"></div>
// 那么我们可以这样获取
console.log(dom) // <div id="dom"></div>
结语
这一次先分享这么多,剩下的抽时间再给大家分享~