面试总结

1、变量提升问题(或者变量预解析)

//执行以下代码会有什么结果?为什么?
function test() {
   console.log(a);
   console.log(foo());

   var a = 1;
   function foo() {
      return 2;
   }
}
test(); //undefined 和 2

原因是,变量和函数都被提升了(hoisted)。因此,在a被打印的时候,它已经在函数作用域中存在(即它已经被声明了),但是它的值依然是 undefined

2、this在javascript中是如何工作的

//在 JavaScript 中,一个函数的上下文环境,也就是this关键词所引用对象,是依赖于函数是如何被调用的,而不是依赖于函数如何b被定义的。
    var fullname = 'John Doe';
    var obj = {
        fullname: 'Colin Ihrig',
        prop: {
            fullname: 'Aurelio De Rosa',
            getFullname: function() {
                return this.fullname;
            }
        }
    };

    console.log(obj.prop.getFullname()); //Aurelio De Rosa

    var test = obj.prop.getFullname;

    console.log(test()); //John Doe
    //当 getFullname() 被赋为test变量的值时,那个语境指向全局对象(window)。这是因为,test被隐式设置为全局对象的属性。因此,函数调用返回window的fullname属性值;

    console.log(test.call(obj.prop)); //Aurelio De Rosa  将this指针重新指向obj.prop,所以位props对象内的fullname了;

3、闭包的使用

//打印对应li元素的索引值,如何改造以下代码段,使其能达到预期效果;
var arr = document.getElementsByTagName("li");
for(var i = 0; i < arr.length;i++){
     arr[i].onclick = function(){
          alert(i);
      }
}

多种方法详见参考链接:https://segmentfault.com/a/1190000003818163

4、CSS的权重值:

4个等级的定义如下:
第一等:代表内联样式,如: style=””,权值为1000。
第二等:代表ID选择器,如:#content,权值为100。 第三等:代表类,伪类和属性选择器,如: .content,权值为10。 第四等:代表类型选择器和伪元素选择器,如: div p,权值为1。

参考链接:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Specificity
http://www.cnblogs.com/rubylouvre/archive/2010/03/17/1687786.html


转载于:https://www.cnblogs.com/huangl/p/6154972.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值