前端面试必问题

**1.如何理解什么是闭包?
2.前端的设计思想?
3.如何面向对象编程?
4.如何理解面向对象编程和面向过程编程?**
5.什么是链式作用域结构?
6.prototype和proto的区别

1.如何理解什么是闭包?
我的理解就是一个函数内部嵌套一个函数,内部函数f2调用外部函数f1变量,从而返回值,来获取f1函数的值,然而
函数f1被调用完啦,f2定义的变量还是存在内存中,没有被垃圾回收体制回收(想一下f1函数嵌套f2函数这个例子)
阮一峰:
http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
答:1.变量作用域
变量作用域:全局变量和局部变量
js的特别之处:函数内部可以直接读取全局变量,但是
在函数外部无法读取函数内部的局部变量。
注意点:在函数内部声明变量的时候,一定要使用var命令。
如果不用的话,实际上声明的是一个全局变量
2.由于在javascript中,只有函数内部的子函数才能读取局部变量,
所以说,闭包可以简单理解成“定义在一个函数内部的函数”。
在本质上,闭包是将函数内部和函数外部连接起来的桥梁
3.这些变量的值始终保持在内存中,不会在发生调用后被自动清除,不会被垃圾回收机制回收,
内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄漏。
解决方法是,在退出函数之前,将不使用的局部变量全部删除

2.前端的设计思想?
前端开发核心思想:
1.表现(css)、内容(html)、行为(js)的分离
2.标记应该是结构良好、语义正确以及普遍合法。
3.Javascript应该起到渐进式增强用户体验的作用。

3.如何面向对象编程?
4.如何理解面向对象编程和面向过程编程?
5.什么是链式作用域结构?
函数f2被包括在函数f1内部,f1内部的所有局部变量,对f2都是可见的。但是f2
内部的局部变量,对f1就是不可见的
对于外部读取函数内部的局部变量就是在嵌套一个子的函数,使它变为父亲函数

6.prototype和_proto_的区别
参考网址:原型对象与原型链
https://www.cnblogs.com/shuiyi/p/5305435.html

prototype是函数才有的属性
_proto_是每个对象都有的属性
但_proto_不是一个规范属性,只是部分浏览器实现了此属性,对应的标准属性是[prototype]
注:大多数情况下,_proto_可以理解为"构造器的原型",即:
_proto_ === constructor.prototype



var a = {};
console.log(a.prototype);  //undefined
console.log(a.__proto__);  //Object {}

var b = function(){}
console.log(b.prototype);  //b {}
console.log(b.__proto__);  //function() {}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值