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的加载
?
- 不能像alert阻塞程序运行
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]) }
推荐阅读
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- JavaScript|JavaScript: BOM对象 和 DOM 对象的增删改查
- 前端|web前端dya07--ES6高级语法的转化&render&vue与webpack&export
- linux笔记|linux 常用命令汇总(面向面试)
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- JS/JavaScript|JS/JavaScript CRC8多项式 16进制
- 面试|我经历的IT公司面试及离职感受(转)
- android-面试|我经历的IT公司面试及离职感受
- Java|一个月内面了30家企业,不断对比薪资,我从18K变成了38K
- vue|Vue面试常用详细总结