- 列举常用的字符串方法
-
indexOf(要查找的字符,开始索引) 查找某个字符串第一次出现的位置 lastIndexOf(要查找的字符,开始索引) 查找某个子字符串最后一次出现的位置 replace(被替换的内容,要替换的内容) 替换好的字符串 substr(从哪个索引开始,截取多少个) 返回截取到的内容 substring(从哪个索引开始,到哪个索引截止),包含开始索引,不包含结束索引;返回截取到的内容 slice(起始索引,结束索引) 截取出来的字符串 split(指定的切割符) 一个用指定切割符切割好的数组 toLowerCase() 转成 小写字母 toUpperCase() 转成 大写字母 charAt() 是找到字符串中指定索引位置的内容返回 trim() 去除空白内容以后的字符串
-
- 列举常用的数组方法
-
join():用指定的分隔符将数组每一项拼接为字符串 push() :向数组的末尾添加新元素 pop():删除数组的最后一项 shift():删除数组的第一项 unshift():向数组首位添加新元素 slice():按照条件查找出其中的部分元素 splice():对数组进行增删改 fill(): 方法能使用特定值填充数组中的一个或多个元素 concat():用于连接两个或多个数组 indexOf():检测当前值在数组中第一次出现的位置索引 lastIndexOf():检测当前值在数组中最后一次出现的位置索引 includes():判断一个数组是否包含一个指定的值 sort():对数组的元素进行排序 reverse():对数组进行倒序 find():返回匹配的值 findIndex():返回匹配位置的索引 toLocaleString()、toString():将数组转换为字符串 ES5新增的数组方法 forEach():ES5 及以下循环遍历数组每一项,没有return返回值 map():ES6 循环遍历数组每一项 filter():“过滤”功能 reduce() 汇总功能 every():判断数组中每一项都是否满足条件 some():判断数组中是否存在满足条件的项 entries() 、keys() 、values():遍历数组
-
- js的数据类型有哪些
-
js有7中数据类型 基础数据类型: 1、String类型,用于表示字符串; 2、Number类型,用于表示数字; 3、Boolean类型; 4、Undefined类型; 5、Null类型; 引用数据类型: 1、Array数组; 2、Object类型。
-
- 什么是作用域链
- 什么是事件委托,应用场景,优缺点
- 什么是深拷贝?什么是浅拷贝?如何实现深拷贝?
- 数组冒泡排序的原理
- 数组排序的方法
- 谈谈你对this的理解
- get请求和post请求的区别
- DOM常见的操作及API
- let、const、var的区别
- 从输入url到浏览器显示页面发生了什么
- 如何实现前端性能优化
- 什么是事件流,解决事件冒泡
- 什么是原型对象
-
所有的构造函数在初始化时,都会自动生成一个特殊的实例话对象,构造函数的prototype属性指向该对象,该对象称为原型对象,或prototype对象
-
- 什么是原型链
-
原型链:由一系列__proto__属性,串联起来的原型对象,称为原型链 原型链的意义:实例化对象在访问属性和方法时,会先访问自身的属性和方法,如果自身不存在对应的属性和方法,则会自动通过__proto__属性在整个原型链上查找,只要找到对应的属性和方法,就能正确执行,如果原型链上没找到,则报错
-
- 前端性能优化可以从哪些方面?
-
1..loading 2.骨架屏 3.压缩 HTML 4.删除不必要的注释 5.删除不必要的属性 6.使用语义化标签 7.减少iframe数量 8.削减DOM数量和层级数量 9.减少 HTTP 请求次数 10.减少重排重绘 11.javascript脚本放到页面底部 12.将javascript和css从外部引入 13.减少DOM操作 14.节流与防抖 15.合理的ajax恳求 16.尽量少用@import 17.避免!important,可以选择其他选择器 18.CSS文件压缩 19.CSS层级嵌套最好不要超过3层 20.删除无用的css 21.慎用*通配符 22.小图片引入雪碧图。 23.图片压缩 24.图片懒加载 25.采用svg图片或者字体图标 26.Base64 27.缓存加载器 28.Hot update 热更新 29.DNS预解析 参考连接:https://blog.csdn.net/chaoPerson/article/details/130743570
-
- new一个实例化对象的四个阶段
-
1. 创建一个空的实例化对象 2. 让构造函数中的this指向空的实例化对象 3. 执行(调用)构造函数,从而创建实例化对象自身的属性和方法 4. 返回实例化对象
-
- 什么是回流和重绘
-
回流指的是元素的尺寸,布局,位置发生变化,导致页面的布局需要重新计算 重绘指的是元素的外观发生变化,但尺寸和布局不变,只需要重新绘制元素. 回流必将引起重绘,而重绘不一定会引起回流。
-
- 常见HTTP状态码的含义
- 什么是防抖和节流,描述防抖的原理和节流的原理
-
本质上是优化高频率执行代码的一种手段; 为了优化体验,需要对resize、scroll、keypress、mousemove 等事件进行调用次数的限制,对此我们就可以采用 防抖(debounce) 和 节流(throttle) 的方式来减少调用频率 防抖: n 秒内只运行一次,若在 n 秒内重复触发,只有一次生效 节流: n 秒后在执行该事件,若在 n 秒内被重复触发,则重新计时
-
- 什么是事件循环
- call、apply、bind的区别
- 什么是闭包,闭包的优缺点
- 简述js的垃圾回收机制
- 什么是内存泄露
9. 说一下promise
10. 说一个async await
11. promise.all 和 promise.race 的用法和区别
18. 三种本地存储的区别
19. ES6新特性
22. 说说最近最流行的一些东西吧?常去哪些网站?
23. 列举10条移动端兼容性问题
34.大文件的分割处理(大文件切片上传,断点续传)
35.如何将最终的金额,专为","逗号分隔的形式
function numberFormate(num) { // 数字格式化为x,xxx,xxx,xxx // 1. 将num专为数字类型 num = parseFloat(num); // 2. 判断是否是一个数字 if (!Number.isNaN(num)) { // 3. 将数字按照.进行分割(主要是针对浮点数) let str = Math.abs(num).toString().split('.'); // 4. 整数部分按照3个一组,看可以分为几组 const a = Math.ceil(str[0].length / 3); // 5. 不够3个一组的,自动补充0 str[0] = str[0].padStart(a * 3, '0'); const numArr = []; // 6. 将数字按照3个一组进行截取 for (let i = 0; i < a; i++) { numArr.push(str[0].substring(i * 3, (i + 1) * 3)); } // console.log(numArr); // 7. 将数组中的第一个值中前面补充的0去除 numArr[0] = parseInt(numArr[0]); // 8. 将数组中的数字按照逗号进行拼接,并且拼接上小数点后面的值 const formateStr = numArr.join(',') + (str[1] ? '.' + str[1] : ''); // 9. 判断初始值是正值还是负值,需不需要添加- return num < 0 ? "-" + formateStr : formateStr; } else { throw new TypeError("传入的参数必须是数字"); } } console.log(numberFormate(1123456789.2234)); // 结果为1,123,456,789.2234
34.前端常用的几种加密方法
35.前端常见的攻击手段及防御方法
36. 用类的方式编写一个b继承a的方法,描述代码实现流程
37. 了解Node么? Node的使用场景都有哪些?
38. 对于前端自动化构建工具有了解吗,简单介绍下
39. js的typeof返回哪些数据类型
标签:面试题,数组,对象,JavaScript,索引,num,str,字符串 From: https://www.cnblogs.com/ranyihang/p/17848448.html