刷波面试题

Q : 一个div,宽度是100px,此时设置padding是20px,添加一个什么css属性可以让div的实际宽度仍然保持在100px,而不是140px?
A : box-sizing : border-box


Q : 清除浮动的方式,提供尽可能多的方案。
A :
1. 找到父元素添加overflow : hidden
2. 额外标签 clear : both
3. 伪元素

clearfix :after {
content : "" ;
clear : both ;
height : 0;
line-height : 0;
display : block;
visibility :hidden;
}


Q : 如何让两个div分别以40%和60%的比例排在一行内,提供尽可能多的方案。
A : 1. display : inline-block 注 : 中间的空白文本元素
2. float : left
3. position : absolute
4. 父元素 display : flex


Q : 如何用css实现一个div的一秒内向右平滑移动100px的动画 。
A : transition : 1s


Q : localStorage,sessionStorage,Cookie的区别和用途。
A : cookie : 体积小 、每次发送请求时携带。可由服务端设置http-only的cookie,客户端也可以设置自己的cookie,可设置失效时间,浏览器关闭后失效。
localStorage : 体积大,除非手动清除否则不会消失
sessionStorage : 体积大,浏览器关闭后消失


Q :

var string = "我的账户余额:2,235,467.20";
                   console.log(?);

A :parseFloat(string.match(/\d+|\./g).join(""))


Q :

function person() {
    return this.name;
}
var someOne = {
    name: 'Jenny',
    age: 18
};
// 此处如何输出 'Jenny'

A : person.call(someOne)


Q :
4.语法题 有一个合法的 JSON 对象(即不包含函数等值的对象),设计一个函数,取出该对象内所有 key 为 “id” 并且其值不为对象、数组的值,装入一个数组并返回。

function extractIds(data) {
    // implement
}
样例数据:
var data = {
    id: 1,
    items: [
        { id: 2 },
        { item: 3, id: [
            { id: 4 },
            { id: 5 }
        ]}
    ]
};

A :

function getId(data){ 
 let stack = [ data ] ,ret = [];
 while(stack.length > 0){
  let cur = stack.pop();
  for(let key in cur){
      if(cur[key] instanceof Object ){
        stack.push(cur[key]);
      }else{
       if(key === "id") ret.push(cur[key]);
      }
  }
return ret ;
} 

Q : 闭包 下面五段代码分别输出什么?并且什么时候输出什么?

for(var i = 0; i < 5; i++) {
    console.log(i);
}
for(var i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i);
    }, 1000 * i);
}
for(var i = 0; i < 5; i++) {
    (function(i) {
        setTimeout(function() {
            console.log(i);
        }, i * 1000);
    })(i);
}
for(var i = 0; i < 5; i++) {
    (function() {
        setTimeout(function() {
            console.log(i);
        }, i * 1000);
    })(i);
}
for(var i = 0; i < 5; i++) {
    setTimeout((function(i) {
        console.log(i);
    })(i), i * 1000);

A : 1. 立即输出0-4
2. 0-4秒间输出 5
3. 0-4秒间输出 0-4
4. 0-4秒间输出 5
5. 立即输出 0-4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值