面试篇—js

心已入冬 提交于 2019-12-25 18:35:05

1.数据类型

 (1)基本数据类型:Number String Null Undefined Boolean

 (2)复杂数据类型:Object

 (3)基本类型:按值访问,可以操作保存在变量中的实际的值

 (4)引用类型:引用类型中的值是保存在内存中的对象

 

1.http方法(get和post的区别)

 (1) get可以被浏览器缓存,post不可以

 (2) get有字符限制,不同浏览器有差异(不能大于2KB),post没有。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB

 (3) get安全性低,账号密码出现在url上,被缓存了。

 

2.箭头函数和普通函数的区别

 (1) 箭头函数作为匿名函数,不能使用new

 (2) 箭头函数不绑定this,会捕获上下文this,作为自己的this值,任何方法都改变不了this指向,call(),bind(),apply()

 (3) 箭头函数不绑定arguments,用rest参数替代

 

3.例举强制类型转换和隐式类型转换

 (1)强制:String(),Boolean(),Number(),parseInt(),parseFloat()

 (2)隐式:+ ,- ,== ,===

 

4.typeof返回那些数据类型

  function,string,boolean,number,undefined,object

 

5.call和apply的区别

  Object.call(this,obj1,obj2,obj3)   参数需要分开传

  Object.call(this,arguments)   所有参数放在一个数组里面

 

6.事件委托

  利用事件冒泡的原理,让自己所触发的事件,让他的父元素代替执行

 

7.如何阻止冒泡事件

function stopBubble(e){
    if(e && e.stopPropagation){
        // 非IE浏览器
        e.stopPropagation();
    }else{ 
        //IE浏览器
        window.event.cancelBubble=true;
    }
}

 

8.如何阻止浏览器默认事件

function stopDefault(e){ 
    //标准浏览器
    if(e && e.preventDefault){ 
        e.preventDefault(); 
    } 
    //个别IE
    else{ 
        window.event.returnValue=fale;
        return false;
    } 
} 

 

9.var 和 let 和 const的区别

  var   函数级作用域     声明变量之前调用:undefined

  let   块级作用域        声明变量之前调用:error(使用let定义变量相当于创建了一个隐藏的作用域,解决for循环问题)

  const 一经定义无法改变,否则报错

 

10.函数声明和函数表达式的区别 

//函数声明
de()
function de(){
  return 1      
}
//函数表达式
expression()   error=> Cannot access 'expression' before initialization
let expression = function(){
  return 2          
}

 

11.编写一个清楚字符串两端空格的函数

function str(str){
    return this.replace(/^\s+/,"").replace(/\s+$/,"");
 }

 

12.获取非行间样式

function getCss(curEle,attr){
    var val = null;
    try{
          val = window.getComputedStyle(curEle,null)[attr];
    }catch(e){
          val = curEle.currentStyle[attr];
    }
    return val;
}
getCss(div,'width')

 

 13.js延迟加载的方法

  (1)defer和async

  (2)动态创建script,插入,加载完毕callback

  (3)按需加载,当触发某个事件,如点击事件,加载某个js,动态创建dom

 

 14.defer和async的区别

  defer:会等到页面在内存中正常渲染结束,开始加载,根据在页面中出现的顺序执行  

  async:之可以使用外部脚本,嵌入代码忽略,会中断页面渲染,知道下载并执行完毕,多个脚本,不能保证执行顺序,谁先下载完,就先执行谁

 

 15.this经典应用场景

  事件:onclick 传入this

  构造函数:new一个object

  call/apply 改变this指针 

 16.jsonp和ajax的区别

  jsonp,动态创建script,执行回调函数,

  ajax,页面无刷新请求数据操作

17.“==”和“===”的区别

  前者会自动转换类型,在进行比较

  后者不会转换,直接比较

18.类数组和数组的区别

  类数组  

  (1)拥有length属性,

  (2)不具有数据所拥有的方法

  常见的类数组有:函数参数 arguments,

  类数组→数组

  Array.prototype.slice.call(arguments,1)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!