跟大家分享一下面试官常问的js面试题 都是我自己理解的 可能也不对
- js基础数据类型
这是五大基础数据类型 :undefined null string Boolean number
ES6新增了一个 symbol 代表独一无二的意思
2.window对象和document对象
win对象就是浏览器中的对象 事件 方法
document 对象就是html文档 同时document也是win对象
3.new操作符具体干了什么
创建一个空对象 举个例子
const a = new b()
创建了这个b对象 然后吧这个b对象的的原型 属性 方法 都赋予了a
4.call()和apply的区别
call()传递给函数的参数必须逐一显示
apply() 传递给函数的参数必须是数组
5.js深浅拷贝区别
浅拷贝就是新对象发生变化会影响到老对象
深拷贝 官话就是采用递归赋与新对象值或属性 新对象的更改不会影响到老对象
6.ES6新增
const let 结构 箭头函数 symbol 等等 太多了 记不住 一般说三个就够了
ES6后增加的ES8也好ES10也好 统称ES6
7.var let const 区别
var 全局变量
function b(){
console.log(a)
var a = 1
}
b()//结果为undefined
其实这个是可以获取到a的 因为var属性有变量提升 在函数执行前 a已经被定义切初始值为undefined
而且没有块级作用域 可以重复声明相同变量
let 有块级作用域 块级作用域就是{} 这个就是一个块级作用域 切不可重复声明相同变量
const 与let 相同 但是不同点是const是常量 不可以被更改
8.什么是闭包
闭包是指一个函数访问另外一个函数作用域中的变量 常见的有 在一个函数内部定义
另外一个函数 然后内部函数引用外部函数变量 这样 外部变量就不会被垃圾回收机制回收
但是这样容易造成内存泄露 至于怎么泄露 我不知道 应该是针扎的吧
优点就是 避免全局变量的污染 也就是你函数内部的变量与var出来的变量名相同 优先使用
你函数内部的
9.this指向问题
this指向的是函数的直接调用者 而不是间接调用者 举个栗子
上面说的 const a = new b 那么这个this就指向a
10.原型链
我说不清楚 自己百度