前端基础面试题

问题1:描述下你对闭包的理解?

答:有权访问另一个函数作用域内变量的函数都是闭包。

举例说明:

function f(x) {
    var i = 3;
    function b(y) {
        alert(x + y + (++i));
    }
    b(10);
}
f(2)

执行结果是alert出16,b函数可以访问到f函数里面的x,也能访问到下面的变量i,不过这还不是一个闭包,只有当return一个内部functionde的时候才是一个闭包

function f(x) {
    var i = 3;
    return function (y) {
        alert(x + y + (++i));
    }
}
var b = foo(2); // b 现在是一个闭包
b(10);

内部函数执行时,会关闭外部函数,直到内部函数执行结束。

总结:闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗!另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样。

问题2:left和offsetLeft有什么区别?

答:区别有几点  1.offsetLeft是相对于父对象的左边距,left 获取或设置相对于 具有定位属性(position定义为relative)的父对象 的左边距;如果父对象定位为相对定位relative,这点两者是相同的。2.offsetLeft返回的是数字,可以用于直接计算;left返回的是带有单位的字符串,如:“10px”;3.left是可以读写的,offsetLeft是只能读不能写的;4.left值要事先定义div的left值才能读取到,并且在html里定义,在css里面定义会style.left会获取不到值,offsetLeft一直可以读取到值。

问题3:attr和prop有什么区别?

答:prop返回的是true和false,atrr返回的是属性值,如果html里面没有该属性则返回“undefind”;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值