目录
12.如何交换字母和数字的顺序?把abc123变成123abc?
16.es6里的promise和async await底层实现原理?nodejs的运行原理?
1.为什么做前端开发?不做后端
2.项目里遇到过什么大的挑战?
3.有学习过其他前端知识吗?
4.了解盒子模型吗?怎么改变盒子的高度?
5.了解移动端和H5的知识吗?
6.http状态码:301,302?
相同:301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)。
不同:301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了);302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B。
301 redirect: 301 代表永久性转移(Permanently Moved),搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址。
302 redirect: 302 代表暂时性转移(Temporarily Moved ),搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的。使用301跳转的场景:
1)域名到期不想续费(或者发现了更适合网站的域名),想换个域名。
2)在搜索引擎的搜索结果中出现了不带www的域名,而带www的域名却没有收录,这个时候可以用301重定向来告诉搜索引擎我们目标的域名是哪一个。
3)空间服务器不稳定,换空间的时候。使用302跳转的场景:
1)比如未登陆的用户访问用户中心重定向到登录页面。
2)访问404页面会重新定向到首页。
7.了解浏览器缓存吗?
见我的另一篇文章https://blog.csdn.net/weixin_45440502/article/details/109586398
第3点
8.js函数的apply和call方法?如何改变上下文?
用法:
/*apply()方法*/
function.apply(thisObj[, argArray])/*call()方法*/
function.call(thisObj[, arg1[, arg2[, [,...argN]]]]);解释:
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
相同:
都“可以用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由thisObj指定的新对象”。
不同:
apply:最多只能有两个参数——新this对象和一个数组argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里。如果argArray不是一个有效的数组或arguments对象,那么将导致一个TypeError。如果没有提供argArray和thisObj任何一个参数,那么Global对象将被用作thisObj,并且无法被传递任何参数。
call:它可以接受多个参数,第一个参数与apply一样,后面则是一串参数列表。这个方法主要用在js对象各方法相互调用的时候,使当前this实例指针保持一致,或者在特殊情况下需要改变this指针。如果没有提供thisObj参数,那么 Global 对象被用作thisObj。
实际上,apply和call的功能是一样的,只是传入的参数列表形式不同。
具体介绍可见 https://www.runoob.com/w3cnote/js-call-apply-bind.html 写的很详细:this的指向
9.了解正则的贪婪匹配吗?
区别:
在限定符后面不加?,则为贪婪模式,贪婪模式会匹配最长的以开始位置开始,以结束位置结束的字符串;
在限定符后面加上?,则为懒惰模式
量词限定符:
元字符:
10.用正则表达式,找到并不是字母c开头的字符串?
/^(?!c).*/
延伸:
1、以“河南”开头
/^河南.*/
2、以“(河南)”开头
/^[\(\(]河南[\)\)].*/
3、不以“河南”开头
/^(?!河南).*/
4、不以“(河南)”开头
/^(?![\(\(]河南[\)\)]).*/
11.用js如何改变dom元素宽度?
document.getElementById("body1").style.width="200px";
12.如何交换字母和数字的顺序?把abc123变成123abc?
let str = 'abc123def456';
let reg = /(\w+?)(\d+)/g;//注意这里有一个?
//()表示分组:将一序列正则表达式看作一个整体
//* 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
//如果去掉?,则会变为贪婪匹配,结果为6abc123def45
let result = str.replace(reg,'$2$1');
13.了解js哪些数组的方法?
1.创建:
- from() (ES6新增)
- of() (ES6新增)
2.空位
- const options = [, , , ] //value:undefined; length:3 (ES6新增)
3.索引