当前位置: 首页 > news >正文

js原生面试总结

冒泡循环

var arr=[2,1,3,4,9,7,6,8]    
// 外层循环代表循环次数  内层循环时每次的两两对比 少一次循环
for (let i = 0; i < arr.length-1; i++) {// 如果进入判断代表当前值大于下一个是需要进行冒泡排序的let bool=truefor (let j = 0; j < arr.length-1-i; j++) {// 虽然进不去判断但是依然会将第二轮循环走完if(arr[j]>arr[j+1]){// 中间值的作用暂存当前值const element = arr[j];arr[j]  = arr[j+1]arr[j+1] = elementbool=false}}// 如果第一轮判断就实现排序就跳出if(bool){break;}
}console.log(arr)

防抖函数

// 防抖定义变量一定要在全局中如果在函数中每次点击都重新生成一个
call  传字符串  apply 传数组  bing 返回方法传数组function debounce(callback,time){let timer=null;let isNodeFirst=falsereturn function(){if(timer){clearTimeout(timer)}if(!isNodeFirst){callback.apply();isNodeFirst=true}else{timer=setTimeout(()=>{callback.apply();// 如果当前不重新赋值每次点击时就不会立即执行第一次isNodeFirst=falsetimer=null;},time)}}
}
let dd=debounce(aa,1000)
// 点击事件执行的是当前函数
// dd()

节流函数(节流参考)

function aa(){console.log(e.target.value)}function throttle(callback,delay){// 初始值必须定义在全局let start=0return function(){let current=Date.now()//如果初始时间为0   第一次不执行if(start==0){start = current}if((current-start)>delay){start=currentcallback.apply()}}}const th = throttle(aa,1000)// 每次执行事件都是这个函数
//  th()// 定时器执行   执行第一次立即执行function throttle(callback,delay){let timer=null;let start=0return function(){if(timer){clearTimeout(timer)}let current =+new Date()if(current-start>delay){callback.apply()start=currentreturn;}timer=setTimeout(()=>{callback.apply()timer=null;},delay)}}

获取固定对象深嵌套方法(获取对象深嵌套值)

//获取固定的深层嵌套对象var user = {name: 'xxx',address: {city: 'hangzhou'}};const str = 'address.city';const get = (obj, path, defaultValue) => {let result = obj, i = 0;const paths = path.split('.');while (i < paths.length) {result = Object(result)[paths[i]];if (result === undefined) {return defaultValue;}i++}return result;};console.log(get(user, str), '--');
http://www.lryc.cn/news/283677.html

相关文章:

  • 接口自动化测试框架设计
  • 详解ISIS动态路由协议
  • Linux操作系统----gdb调试工具(配实操图)
  • 去除GIT某个时间之前的提交日志
  • 4 python快速上手
  • 单元测试-spring-boot-starter-test+junit5
  • CentOS 7上安装Anaconda 详细教程
  • 2023年全球软件架构师峰会(ArchSummit深圳站):核心内容与学习收获(附大会核心PPT下载)
  • RT-Thread Studio学习(十六)定时器计数
  • 【linux进程间通信(一)】匿名管道和命名管道
  • 第11章 jQuery
  • leetcode:1736. 替换隐藏数字得到的最晚时间(python3解法)
  • MySQL存储函数与存储过程习题
  • 基于 Hologres+Flink 的曹操出行实时数仓建设
  • 【Docker】实战多阶段构建 Laravel 镜像
  • 【MATLAB源码-第118期】基于matlab的蜘蛛猴优化算法(SMO)无人机三维路径规划,输出做短路径图和适应度曲线。
  • 【计算机组成与体系结构Ⅱ】Tomasulo 算法模拟和分析(实验)
  • Nginx 简介
  • C++入门学习(一)写一个helloworld
  • ChatGPT 股市知识问答
  • uniapp多端评价页
  • 行为树(Behavior Trees)
  • opensssl BIO方式https客户端
  • JavaScript之判断是否整数、取余、取整、进制、位或、ES6
  • 【打造你自己的Shell:编写定制化命令行体验】
  • PGSQL主键序列
  • pg14.2迁移至KingbaseV8R6后部分表记录数为空
  • 【Spring 篇】深入解析SpringMVC的组件魅力
  • HPsocket 在 C# 中的运用:一款优秀的 socket 通信框架
  • 黑豹程序员-MyBatisPlus封装SQL的where条件的对象 QueryWrapper