【日更】前端面试题

89 阅读3分钟

一、什么是 js?js 是单线程还是多线程?

简单的来说js就是运行在浏览器中的解释性语言,脚本语言,是单线程

二、数据类型有哪些?怎样判断数据类型?

1、基本数据类型:
    ①、字符串:string
    ②、数字:number
    ③、布尔:boolean
2、复合引用数据类型:
    ①、对象:object
    ②、数组:array
    ③、函数:function
3、特殊数据类型
    ①、空:null
    ②、返回值为空:undefined
    ③、不是一个数字:NaN
4、检测数据类型的方法:
    ①、检测除数组外的数据类型:typeof
    ②、检测数组数据类型:Array.isArray()
    ③、检测不是一个数字:isNaN

三、在 js 中,=、==、===有什么区别?

1、=:表示赋值
2、==:只比较大小,不比较数据类型
3、===:既比较大小,又比较数据类型

四、i++ 和 ++i 的区别?

1i++:先取i的值,作为表达式i++的结果,然后在对i进行+1 【先赋值后加一】
2、++i:先取i的值进行+1,然后取i的值作为++i的表达式的结果 【先加一后赋值】

五、while 和 do while 有什么区别?

1while是条件成立才执行循环,条件不成立不执行循环
2do while是先执行一次循环,再判断条件是否成立,成立则执行循环体,不成立不执行循环体

六、break 和 continue 的区别?

1break:终止当前循环,看到break,后面的呢代码就不执行了
2continue:跳出当前循环,继续执行下一循环

七、九九乘法表

for (let i = 1; i < 9; i++) {
  for (let j = 1; j < i; j++) {
    document.write(i + "*" + j + "=" + i * j + " ");
  }
}

八、知不知道递归函数?递归函数经常用吗?递归函数的缺点是什么?

1、自己调用自己的函数就是递归函数。
2、公司明文规定禁止使用递归函数。
3、递归函数必须等最后一次的结果出现才能完成逻辑执行,违背了内存管理机制。

九、用过闭包函数吗?什么是闭包函数?闭包函数的优缺点?内存泄漏,js 回收机制?

1、闭包就是能够读取函数内部变量的函数,定义在函数的内部的函数
2、优点:可以在全局重复使用变量并且不会造成变量污染
3、缺点:闭包容易造成内存泄漏,比较消耗内存,内存消耗过多,会导致浏览器很卡。
4、内存泄漏:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。
5、JS的回收机制:JavaScript垃圾回收的机制很简单:找出不使用的变量,然后释放掉其占用的内存。js中最常用的垃圾回收方式就是标记清除。比如在函数中声明一个变量,就将这个变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。而当变量离开环境时,则将其标记为“离开环境”。

十、如何避免闭包引起的内存泄漏?哪些操作会造成内存泄漏?

1、如何避免闭包引起的内存泄漏?
    ①、注意程序逻辑,避免死循环
    ②、减少不必要的全局变量,在函数最后将不使用的变量赋值为空
    ③、避免创建过多的对象
2、哪些操作会造成内存泄漏?
    ①、意外的全局变量
    ②、脱离DOM的元素引用
    ③、未清除的定时器
    ④、闭包函数
    ⑤、console.log