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)
来源:https://www.cnblogs.com/naturl/p/11088005.html