• 前端面试题 10 个「有用」JavaScript 代码片段


    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情


    降低阅读负担,启发创作心智,轻松学习 JavaScript 技巧,日拱一卒,jym,冲~

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

    类数组转数组

    什么是类数组?

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

    1. const fn = function(){
    2. console.log(arguments)
    3. }
    4. fn("a1","a2","a3")

    打印结果:

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

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

    1. Array.prototype.slice.call(arguments);
    2. 复制代码

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

    [...arguments]
    

    精简 console.log

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

    1. const c = console.log.bind(document)
    2. c(222) // 222
    3. c("hello world") // hello world

    对象动态属性

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

    1. const dynamic = 'color';
    2. var item = {
    3. brand: 'Ford',
    4. [dynamic]: 'Blue'
    5. }
    6. console.log(item);
    7. // { brand: "Ford", color: "Blue" }

    获取链接参数

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

    window.location.search
    

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

    let type = new URLSearchParams(location.search).get('type');
    

    比如:

    好用!!

    删除数组元素

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

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

    1. const array = ["a", "b", "c", "d"]
    2. array.splice(0, 2) // ["a", "b"]

    对象判空

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

    1. Object.keys({}).length // 0
    2. Object.keys({key: 1}).length // 1
    3. 复制代码

    推荐switch case

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

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

    获取数组最后一项

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

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

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

    转换成布尔值

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

    1. !!undefined // false
    2. !!"996" // true
    3. !!null // false
    4. !!NaN // false

    用对象传参

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

    1. function getItem(price, quantity, name, description) {}
    2. getItem(15, undefined, 'bananas', 'fruit')
    1. function getItem(args) {
    2. const {price, quantity, name, description} = args
    3. }
    4. getItem({
    5. name: 'bananas',
    6. price: 10,
    7. quantity: 1,
    8. description: 'fruit'
    9. })

     总结给大家推荐一个实用面试题库

     1、前端面试题库 (面试必备)            推荐:★★★★★

    地址:前端面试题库

    2、前端技术导航大全      推荐:★★★★★

    地址:前端技术导航大全

    3、开发者颜色值转换工具   推荐:★★★★★

    地址 :开发者颜色值转换工具

     

  • 相关阅读:
    WEB安全基础 - - - Metasploit基础
    C语言——栈
    vue循环滚动字幕
    《程序人生》
    双数组字典树 (Double-array Trie) 实现原理 -- 代码 + 图文,看不懂你来打我
    【从头构筑C#知识体系】2.C# 2.0
    顽皮恶魔(模拟)
    Java8 parallerStream导致Spring项目启动线程阻塞(死锁)
    独立站建站实操:斗篷使用、AB收款【FP商家不能错过】
    C语言10、自定义类型:结构体进阶,位段
  • 原文地址:https://blog.csdn.net/weixin_42981560/article/details/126385976