1.数据转为Boolean有哪几种情况为flase

A.NaN

  1. console.log(Boolean(NaN));//false

B.null

  1. console.log(Boolean(null));//false

C.undefined

  1. console.log(Boolean(undefined));//false

D.””

  1. console.log(Boolean(""));//false

E.0

  1. console.log(Boolean(0));//false


2.如何判断数组包含某个值

A.includes 查找数组中是否存在某个值(返回值为boolean值)

  1. var arr=[1,2,3]
  2. console.log(arr.includes(4));//false

B.indexOf 当返回值为-1时,不存在,存在时,就返回下标的值

  1. var arr=[1,2,3]
  2. console.log(arr.indexOf(1));//0
  3. console.log(arr.indexOf(4));//-1

3.break和continue之间的区别

A.break 达到某个条件后,跳出循环

  1. for(var i=0;i<6;i++){
  2. console.log(i)
  3. if(i==3){
  4. break;
  5. }
  6. }
  7. console.log("hello");//0 1 2 3 hello

B.continue 跳过某个条件,继续循环

  1. for(var i=0;i<6;i++){
  2. if(i==3){
  3. continue;
  4. }
  5. console.log(i); //0 1 2 4 5
  6. }

4.如何对对象进行遍历

for…in..

  1. var obj={
  2. name:"li",
  3. age:12,
  4. sex:"男"
  5. }
  6. for(var item in obj){
  7. console.log(obj[item]);
  8. }

5.什么是跨域

跨域:协议,子域名,主域名,端口号有任意一个不同就是跨域
协议不同
https://www.baidu.com
http://www.baidu.com
子域名不同
https://www.baidu.com
https://aaa.baidu.com
主域名不同
https://www.baidu.com
https://www.baidu.top
端口号不同
https://www.baidu.com:8080
https://www.baidu.com:80

6.如何解决跨域

A.jsonp

  1. 使用时引入jQuery文件
  2. $.ajax({
  3. type:"method",
  4. url:"",
  5. dataType:"jsonp",
  6. jsonp:"callback",
  7. success:function(data){
  8. },
  9. error:function(xhr){
  10. console.log(xhr.status)
  11. }
  12. })

B.服务器的解决方案
image.png
C.js中script标签不受同源策略的影响也可以实现跨域

  1. var script = document.createElement("script");
  2. script.src = "http://api.douban.com/v2/movie/subject/1764796?&callback=handleResponse";
  3. document.body.prepend(script);
  4. function handleResponse(res) {
  5. // 对response数据进行操作代码
  6. console.log(res)
  7. }

7.什么是同步,什么是异步

同步:客户端想服务器端发送请求的时候,用户不可以进行其他操作

  1. //同步操作
  2. console.log(1);
  3. alert("lalala");
  4. console.log(2);

异步:客户端想服务器端发送请求的时候,用户可以进行其他操作

  1. //异步操作,
  2. console.log(1);
  3. setTimeout(()=>{
  4. console.log("http");
  5. },1000)
  6. console.log(2);

8.什么是重载

根据参数的不同,动态决定调用哪个方法
js中没有重载,因为重复声明,下面的会覆盖上面的声明

  1. <script>
  2. //js中没有重载,因为重复声明,下面的会覆盖上面的声明
  3. function go(a){
  4. console.log(a)
  5. }
  6. function go(a,b){
  7. console.log(a+b)
  8. }
  9. go(10);
  10. go(10,20)
  11. </script>

使用arguments模拟重载

  1. function go(){
  2. if(arguments.length==1){
  3. console.log(arguments[0])
  4. }
  5. else{
  6. console.log(arguments[0]+arguments[1])
  7. }
  8. }
  9. go(10);
  10. go(10,20);

9.json格式的字符串如何解析为json对象

JSON.parse()

  1. var txt=xhr.responseText;
  2. /* JSON.parse() 可以json格式的字符串,转换为json格式的数据 */
  3. var obj=JSON.parse(txt);

10.如何识别数组

Array.isArray(arr)
arr instanceof Array

  1. var arr=[1,2];
  2. console.log(Array.isArray(arr));//true
  3. console.log(arr instanceof Array);//true

11.字符串哪些方法支持正则表达式

A.replace 替换

  1. var str="hello";
  2. var reg=/e/g;
  3. console.log(str.replace(reg,""));//hllo

B.match 以数组的形式返回匹配的值

  1. var str="hello";
  2. var reg=/e/g;
  3. console.log(str.match(reg));//["e"]

C.split 将字符串分割成数组

  1. var str="hello";
  2. var reg=/e/g;
  3. console.log(str.split(reg)); //["h", "llo"]

D.search 获取值得下标(也可以用来判断值是否存在)

  1. var str="hello";
  2. var reg=/e/g;
  3. console.log(str.search(reg));//1

12.原生ajax如何实现

1.创建ajax核心对象
2.与服务器建立连接
3.发送请求
4.响应

  1. <p id="app"></p>
  2. <script>
  3. var app=document.getElementById("app");
  4. var url="http://192.168.4.18:8000/"
  5. /* ajax 如何使用ajax向后台获取数据*/
  6. /* 1.创建ajax核心对象 */
  7. var xhr=new XMLHttpRequest();
  8. /* 2.与服务器建立连接 xhr.open(method,url,async) 分别是 请求的方式,地址,是否异步*/
  9. xhr.open("get",url,true);
  10. /* 3.发送请求 */
  11. xhr.send();
  12. /* 4.响应
  13. onreadystatechange 监听服务器的响应状态
  14. */
  15. xhr.onreadystatechange=function(){
  16. /* xhr.status 服务器端响应的状态码 200 */
  17. /* xhr.readyState 服务器响应的进度 4 响应已经完成 */
  18. if(xhr.readyState==4 && xhr.status==200){
  19. var txt=xhr.responseText;
  20. /* JSON.parse() 可以json格式的字符串,转换为json格式的数据 */
  21. var obj=JSON.parse(txt);
  22. console.log(obj);
  23. app.innerHTML=obj.name;
  24. }
  25. }
  26. </script>

13.jquery-ajax的传参

  1. $.ajax({
  2. url, 请求的url地址
  3. type:"get", 请求的方式
  4. data,
  5. datatype, 请求的数据类型
  6. success:res=>{ 成功的回调
  7. console.log(res);
  8. }
  9. })

14.axios的 传参

  1. axios({
  2. url,
  3. method:"get",
  4. params:{
  5. 问号后面的值
  6. }
  7. }).then(res=>{
  8. console.log(res);
  9. })

15.search的返回值

A.值存在,返回下标
B.值不存在,返回-1

  1. var str="hello";
  2. console.log(str.search(e));//1
  3. console.log(str.search(a));//-1

16match的返回值

数组

  1. var str="hello";
  2. console.log(str.match(e));//["e"]

17typeof能否识别数组,函数

A.不可以识别数组,返回值为object

  1. var arr=[1,2];
  2. console.log(typeof arr);//object

B.可以识别函数,返回值为function

  1. function go(){
  2. }
  3. console.log(typeof go);//function

18函数传的参数时不定参,还是定参,传递的参数装载在函数的哪个对象中

函数传的是不定参,传递的参数装载在arguments对象中

  1. <script>
  2. /*
  3. js传递不定参数,函数内部有一个arguments对象,接受传递过来的参数,
  4. arguments对象是一个类数组对象
  5. */
  6. function go(a){
  7. console.log(arguments)
  8. console.log(a)
  9. }
  10. go(10,3);
  11. </script>

19split和join

A.split 将字符串分割成数组

  1. var str="hello";
  2. var arr=str.split("");
  3. console.log(arr);//["h", "e", "l", "l", "o"];
  4. console.log(str.split());//["hello"];
  5. console.log(str.split("e"));//["h", "llo"];

B.join 将数组拼接成字符串

  1. var arr=["html","css","js"];
  2. var b=arr.join();
  3. var c=arr.join("");
  4. var d=arr.join("/");
  5. console.log(b);//html,css,js
  6. console.log(c);//htmlcssjs
  7. console.log(d); //html/css/js
  8. console.log(typeof b);

20如何阻止a标签的跳转

return false

  1. <a id="app" href="www.baidu.com">百度</a>
  2. let app = document.getElementById("app");
  3. app.onclick = function(){
  4. return false;
  5. }

21jquery中获取元素的宽高

  1. <style>
  2. div{
  3. width: 200px;
  4. height: 200px;
  5. padding: 20px;
  6. border:1px solid #eee
  7. }
  8. </style>

A.content:width() height()

  1. console.log($("div").width());//200
  2. console.log($("div").height());//200

B.content+pading innerWidth() innerHeight()

  1. console.log($("div").innerWidth());//240
  2. console.log($("div").innerHeight());//240

C.content+padding+border outerWidth() outerHeight()

  1. console.log($("div").outerWidth());//242
  2. console.log($("div").outerHeight());//242

22every,filter,find,findIndex的返回值

A.every 返回值是boolean值 只有数组中每一项满足某个条件,就输出true

  1. var arr=[2,4,6];
  2. console.log(arr.every(item=>item>=2));//true
  3. console.log(arr.every(item=>item>=4));//false

B.filter 返回值是以数组形式的匹配的值

  1. var arr=[2,4,6];
  2. console.log(arr.filter(item=>item>=2));//[2,4,6]
  3. console.log(arr.filter(item=>item>=4));//[4,6]

C.find 返回值是通过测试(函数内判断)的数组的第一个元素的值

  1. var arr=[2,4,6];
  2. console.log(arr.find(item=>item>=2));//2
  3. console.log(arr.find(item=>item>=4));//4

D.findIndex 返回值是通过测试的数组的第一个元素的下标

  1. var arr=[2,4,6];
  2. console.log(arr.findIndex(item=>item>=2));//0
  3. console.log(arr.findIndex(item=>item>=4));//1
  4. console.log(arr.findIndex(item=>item>=7));//-1

23什么是回到地狱

由多层嵌套的回调函数组成的代码称为回调地狱

24.同源策略

js出于同源策略,不允许从一个域去访问另一个域的对象

25for… in和for…of的区别

A.for…in
返回值是数据结构的键名
遍历对象返回值是对象的key值,遍历数组返回值是数组的下标
B.for…of
返回值是键值对中的值