js常见面试题(一)

1.闭包是什么,有什么特性,对页面有什么影响

闭包就是内部函数可以访问到外部函数的变量。
优点:变量常驻于内存中不会污染全局
闭包的缺点:滥用闭包函数会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数

2.什么是作用域?

指的是作用的范围
分为俩种一种是函数局部作用域,一种是全局作用域。
定义一个函数就开辟一个局部作用域,函数执行完之后销毁局部作用域,只能在函数内0用该变量,
整个 js 执行环境有一个全局作用域,页面打开及创建,关闭及销毁,在任何地方都可以使用该变量

3.事件委托是什么

利用事件冒泡的原理,让自己的所触发的事件,让他的父元素代替执行

优点:

(1)可以大量节省内存占用,减少事件注册
(2)可以实现当新增子对象时无需再次对其绑定事件,对于动态内容部分尤为合适

缺点:

如果全部都使用委托,容易产生事件误判

4.事件冒泡的原理

事件从dom 树的底层 层层往上传递,直至传递到dom的根节点就叫事件冒泡。

5.如何阻止事件冒泡及默认事件?

e. stopPropagation();//阻止事件冒泡
e. preventDefault();//阻止默认事件

6.Javascript 如何实现继承?

原型链继承

function SuperType () {
    this.property = true
}
SuperType.prototype.getSuperValue = function () {
    return this.property
}
function SubType () {
    this.subproperty = false
}
// 继承了SuperType //
SubType.prototype = new SuperType()
SubType.protype.getSubValue = function () {
    return this.subproperty
}
var instance = new SubType()

构造函数继承

function SuperType () {
    this.colors = ["red", "blue", "green"]
}
function SubType () {
    // 继承了SuperType
    SuperType.call(this)
    // 只能继承构造函数上的属性
}

组合继承,寄生式继承,寄生组合继承

7.把 Script 标签 放在页面的最底部的 body 封闭之前 和封闭之后有什么区 别?浏览器会如何解析它们?

如果说放在 body 的封闭之前,将会阻塞其他资源的加载
如果放在 body 封闭之后,不会影响 body 内元素的加载

8.、解释 jsonp 的原理

通过动态创建script标签,来请求服务端的文件,这文件返回结果是一段js代码。
作用:调用我们之前定义好的函数,从而将服务端的数据发送给客户端。 使用jsonp时:
1. 每次都需要不同的函数名
2. 通过url传输到后台

9.javascript 中的垃圾回收机制?

在 Javascript 中,如果一个对象不再被引用,那么这个对象就会被 GC 回收。如果两个对象互相引用,而不再 被第 3 者所引用,那么这两个互相引用的 对象也会被回收。如果
函数 a 被 b 引用,b 又被 a 外的 c 引用,这就是为什么 函数 a
执行后不会被回收的原因

10.JavaScript 执行过程

JavaScript 运行分为两个阶段:

- 预解析

  • 全局预解析(所有变量和函数声明都会提前;同名的函数和变量函数的优先级高)
  • 函数内部预解析(所有的变量、函数和形参都会参与预解析)
    • 函数
    • 形参
    • 普通变量

- 执行

先预解析全局作用域,然后执行全局作用域中的代码,
在执行全局代码的过程中遇到函数调用就会先进行函数预解析,然后再执行函数内代码。

11. 什么是面向对象

面向对象不是新的东西,它只是过程式代码的一种高度封装,目的在于提高代码的开发效率和可维 护性。

面向对象的特性:

1. 封装性
2.继承性
3.[多态性]抽象

12.深拷贝和浅拷贝

深拷贝:当一个对象保存的是另一个对象的引用时,改变其中一个,源对象不会改变。
浅拷贝:一个对象复制另外一个对象,改变其中一个,原对象属性也会被跟着改变。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上流星&洒下星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值