前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >10 个「有用」JavaScript 代码片段

10 个「有用」JavaScript 代码片段

作者头像
掘金安东尼
发布2022-08-22 09:10:18
1810
发布2022-08-22 09:10:18
举报
文章被收录于专栏:掘金安东尼

注:本篇可能更适合 JS 新手食用,大佬请绕道🤝

类数组转数组

什么是类数组?

我们最常见的类数组比如函数的参数 arguments

代码语言:javascript
复制
const fn = function(){
    console.log(arguments)
}

fn("a1","a2","a3")

打印结果:

类数组的属性为数字、并且还有 length 属性,主要是为了保证 arguments[i] 和 arguments.length 都能拿到值。

将类数组转化为数组我们通常用 call 方法:

代码语言:javascript
复制
Array.prototype.slice.call(arguments);

其实也可以用 ... 扩展符实现类数组转数组:

代码语言:javascript
复制
[...arguments]

精简 console.log

全局这样声明,后面再使用 console.log 打印值就方便多啦:

代码语言:javascript
复制
const c = console.log.bind(document) 

c(222) // 222
c("hello world") // hello world

对象动态属性

声明对象时,如果属性是动态的,可以这样声明:

代码语言:javascript
复制
const dynamic = 'color';
var item = {
    brand: 'Ford',
    [dynamic]: 'Blue'
}
console.log(item); 
// { brand: "Ford", color: "Blue" }

获取链接参数

我们都知道 window.location.search 可以获取 url 中 ““?” 问号后面的参数:

代码语言:javascript
复制
window.location.search

然后我们可以再通过 new URLSearchParams(location.search).get('type') 方法获取具体某一个参数的值

代码语言:javascript
复制
let type = new URLSearchParams(location.search).get('type');

比如:

好用!!

删除数组元素

很多同学会用 delete 删除数组的值,这样做数组长度并不会发生变化,并且取值会是 undefined

推荐使用 splice 来删除数组元素

代码语言:javascript
复制
const array = ["a", "b", "c", "d"] 
array.splice(0, 2) // ["a", "b"]

对象判空

对象判空小技巧,使用 Object.keys({})

代码语言:javascript
复制
Object.keys({}).length  // 0
Object.keys({key: 1}).length  // 1

推荐switch case

推荐使用 switch case 而不是 if...else if...

代码语言:javascript
复制
if (1 == month) {days = 31;}
else if (2 == month) {days = IsLeapYear(year) ? 29 : 28;}
else if (3 == month) {days = 31;}
else if (4 == month) {days = 30;} 
else if (5 == month) {days = 31;} 
else if (6 == month) {days = 30;} 
else if (7 == month) {days = 31;} 
else if (8 == month) {days = 31;} 
else if (9 == month) {days = 30;} 
else if (10 == month) {days = 31;} 
else if (11 == month) {days = 30;} 
else if (12 == month) {days = 31;}
代码语言:javascript
复制
switch(month) {
        case 1: days = 31; break;
        case 2: days = IsLeapYear(year) ? 29 : 28; break;
        case 3: days = 31; break;
        case 4: days = 30; break;
        case 5: days = 31; break;
        case 6: days = 30; break;
        case 7: days = 31; break;
        case 8: days = 31; break;
        case 9: days = 30; break;
        case 10: days = 31; break;
        case 11: days = 30; break;
        case 12: days = 31; break;
        default: break;
}

获取数组最后一项

获取数组最后一项有更简单的写法:arr.slice(-1)

代码语言:javascript
复制
const arr = [1, 2, 3, 4, 5];
arr[arr.length - 1]  // 5
代码语言:javascript
复制
arr.slice(-1) // [5]

slice 也并不会修改原来的数组:

转换成布尔值

类型转换,!! 两个感叹号可以将变量转换为布尔值。之前就有看到有人问 !! 双感叹是干啥的,这下知道了吧~

代码语言:javascript
复制
!!undefined // false
!!"996"     // true
!!null      // false
!!NaN       // false

用对象传参

把参数包装成一个对象再传,否则谁能读懂这种没头没尾的且要求顺序的参数的意义?

代码语言:javascript
复制
function getItem(price, quantity, name, description) {}
getItem(15, undefined, 'bananas', 'fruit')
代码语言:javascript
复制
function getItem(args) {
    const {price, quantity, name, description} = args
}
getItem({
    name: 'bananas',
    price: 10,
    quantity: 1, 
    description: 'fruit'
})
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 类数组转数组
  • 精简 console.log
  • 对象动态属性
  • 获取链接参数
  • 删除数组元素
  • 对象判空
  • 推荐switch case
  • 获取数组最后一项
  • 转换成布尔值
  • 用对象传参
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档