js|web前端面试题总结笔记——JavaScript部分

js中的变量类型 值类型和引用类型

  • 值类型
    undefined
    string
    number
    boolean
  • 引用类型
    object:
    ? {}
    ? []
    ? null
    ? function
  • 强制类型转换
    字符串拼接
    ==运算符
    if语句
    逻辑运算符
    ? 判断是否是true还是false: console.log(!!a);



===与== 强制类型转换
JS中的内置函数
JS变量按照存储方式分为哪些类型
理解json
window.onload和DOMContentloaded 浏览器渲染
作用域
JS模块化
JS的基础算法
作用域和闭包 【js|web前端面试题总结笔记——JavaScript部分】? 执行上下文
? 自动会将函数声明 和函数表达式提前
? this
? 在执行时,才能确认值
?
? 作用域
? 作用域链
? 闭包
变量提升
? 函数和声明会提前
this的几种场景
? 作为构造函数
? 作为对象属性
? 作为普通函数
? call 直接用
? apply 要用[] 数组方式
? bind (.bind({y:100}))
创建10个a 分别点击 分别弹出序号
作用域
闭包

异步和单线程 同步和异步
?
setTimeout
前端使用异步的场景
  • ? 在可能等待的情况需要异步
    • 不能像alert阻塞程序运行
    • 所以 等待的情况下 都需要异步
      定时任务:setTimeout setInterval
      网络请求:ajax请求,动态IMG的加载
      ?
var xhr=XMLHttpRequest() ? xhr.open("get",url) ? xhr.send() ? xhr.onreadystatechange=function(){if(xhr.readystatechange==4&&xhr.status==200) { document.getElementById("myDiv").innerHTML=xhr.responseText; } } ?

? 事件绑定
日期
function foematDate(dt){ if(!dt){ dt=new Date() } var year = dt.getFullYear() var month = dt.getMonth()+1 var date = dt.getDate() if(month<10){ month='0'+month } if(date<10){ date='0'+date } return year+ '-' +month+'-'date //日期格式 } var dt=new Date() var formatDate = formatDate(dt) console.log(formatDate)

Math 获取0-1之间的随机数Math.random()
var random=Math.random() var random=random+'0000000000' var random=random.slice(0,10) console.log(random)


数组API forEach:遍历所有元素
var arr = ['a','b','c','d'] arr.forEach(function(item,index){ console.log(index,item) })


function forEach(obj,fn) { var kry if(obj instanceof Array) { obj.forEach(function(item,index) { fn(index,item) }) } else { for(key in obj) { if (obj.hasOwnProperty(key)) { fn(key,obj[key]) } } } } var arr = [1,2,3,4] forEach(arr,function(index,item) { console.log(index,item) }) var obj={x:100,y:200,z:300} forEach(obj,function(key,val) { console.log(key,val) })


every:判断所有元素是否符合条件
var arr = [1,2,3,4] var result=arr.every(function(item,index){ if(item<5){ return true } }) console.log(result)

some判断至少一个元素符合条件
var arr = [1,2,3,4] var result=arr.some(function(item,index){ if(item<3){ return true } }) console.log(result)

sort
}):排序
var arr = [1,6,2,7,3,5,4] var arr2=arr.sort(function(a,b){ return a-b //从小到大排序 反之 大到小 }) console.log(arr2)

map:对元素重新组装
var arr = [1,2,3,4] var arr2=arr.map(function(item,index){ return '+item+' }) console.log(arr2)

filter:过滤符合条件的元素
var arr = [1,2,3,4] var arr2=arr.filter(function(item,index){ if(item>2){ return true } }) console.log(arr2)

for in
var obj = { x:100, y:200, z:300 } var key for (key in obj) if(obj.hasOwnProperty(key)) { console.log(key,obj[key]) }

    推荐阅读