-
JS的数据类型有哪些
基本数据类型(简单数据类型)
1、string
2、number
3、boolean
4、undefined
5、null
6、Symbol
ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
由于每一个 Symbol 的值都是不相等的,所以 Symbol 作为对象的属性名,可以保证属性不重名。
7、 BigInt
使用BigInt,应用程序不再需要变通方法或库来安全地表示Number.MAX_SAFE_INTEGER
和Number.Min_SAFE_INTEGER
之外的整数。
引用数据类型(复杂数据类型)
1、object
2、array
3、function
4、data -
undefined和unll的区别
1、undefined代表的是未定义,null代表的是空对象
2、变量声明了但还没有定义时会返回undefined,null一般用来给一些可能会返回对象的变量初始化 -
基本数据类型和引用数据类型的区别
1、基本数据类型存放在栈中,引用数据类型存放在堆中
2、存放基本数据类型存放的是数据的实际值,存放引用数据类型存放的是数据的指针
3、复制基本数据类型会创建这个值的副本,复制引用类型是复制的指针
4、判断属于哪种基本数据类型使用typeof,判断属于哪种引用类型使用instanceoflet a = 1; console.log(typeof a);Number let b = new Date(); console.log(b instanceof Date);true
-
为什么instanceof可以判断引用数据类型
typeof判断数据类型的时候,会直接返回原型链上最后一个对象,而instanceof会去查找原型链上存不存在这个构造函数,存在的话就返回true -
什么是递归
递归就是函数自己调用自己,递归需要有终止条件,否则就会变成死循环function test(a = 1) { console.log(a); a++; return a < 10 ? test(a) : ""; } test(1);
-
JS中this的指向
1、全局函数指向window
2、构造函数指向实例对象
3、对象的方法指向对象
4、事件处理函数指向事件的对象
5、定时器函数指向window
6、箭头函数中不绑定this,定义箭头函数的作用域的this指向谁它就指向谁
7、apply调用this指向apply方法的第一个参数
8、立即执行函数指向window -
什么是闭包
理解闭包首先要理解js垃圾回收机制,就是当一个函数被执行完后,其作用域会被回收,如果形成了闭包,执行完后其作用域就不会被回收。如果某个函数能访问其他函数内的变量,就会形成闭包。闭包的作用就是延伸了变量的作用范围(被访问的变量所在的函数我们就称为闭包) -
什么是原型链
JS是面向对象的,每一个实例对象都会有一个_proto_属性,该属性指向构造函数的prototype原型对象。当一个对象查找一个属性时,如果自身没有,就会通过_proto_向原型上查找,如果原型上没有,就会向原型的原型继续查找,直到查找到Object.prototype._proto_为null,这样就形成了原型链 -
实现继承的方法有哪些
1、原型链继承
2、构造函数继承
3、组合继承
4、寄生组合继承
5、es6中的class类继承 -
什么是事件捕获
先触发父元素的事件,再触发子元素的事件 -
什么是事件冒泡
先触发子元素的事件,再触发父元素的事件 -
什么是事件委托,这样做有什么好处
-
如何阻止事件冒泡和默认事件
-
什么是同源策略
协议相同,域名相同,端口相同,则视为同源,三者中的任何一个不相同都不是同源,如果不是同源则会产生跨域问题 -
如何解决跨域问题
1、cors解决
2、jsonp解决
核心原理:利用script标签的src属性来发送请求,因为跨域只对ajax有限制
JS面试题【更新中】
于 2022-06-21 15:50:54 首次发布