面试题---杂项

通过一段时间的整理,又有选中的面试题目与小伙伴们分享喽~接下来看一下以下几个面试题吧!

第一题:

var lowerCase = /^[a-z]+$/;
console.log(lowerCase.test(null));//true
console.log(lowerCase.test());//true

熟悉javascript中正则表达式的小伙伴们应该都明白,这是一个验证任意a到z的正则表达式。正则表达式中的test()方法验证的是字符串,null是一个对象,在用test()方法时被强制转化为字符串所以为true;验证值为空时,被强制转化为test(‘undefined’),所以也为true;

第二题:

var a = /123/;
var b = /123/;
console.log(a==b);//false
console.log(a===b);//false

这个题需要对object有一定的理解,对象是通过指针指向的内存地址来做比较,只要内存地址不一样就都为false;在这个题中a与b都为正则对象,分别指向a与b,所以指向的内存不一样就都为false了;

第三题:

console.log(1<2<3,3<2<1);//true,true

不管是‘<’,还是‘>’,都是从左往右运算;1<2----true,true<3时会把true强制转化为1,即变成1<3,所以为true;

同理3<2为false,false<1则转化为0<1,所以为true;

第四题:

var arr = Array(3);
arr[0] = 2;
arr.map(function(elem){
    return '1';
})//['1',empty*2]

首先要明白map()函数的用法,

array.map(function(currentValue,index,arr){},thisValue);
①、数组中的每个元素都会执行这个函数, 函数必传

②、函数参数:currentValue为必传参数当前元素的值;index:可选,当期元素的索引值;  arr:可选,当期元素属于的数组对象

第五题:

function foo()    
}
var oldName = foo.name;
foo.name = "bar";
console.log(oldName,foo.name)//foo,foo

注意点:函数实例会有一个内置的name属性,因为在开发很少用到,所以很多小伙伴并不知道这个东西的存在,这个属性是只读的,不可修改,不管怎么赋值都是无效的。

第五题:许多小伙伴肯定用过Math中的方法,接下来看一下有趣的问题啊,臭臭以前没有发现,现在分享给大家哦~

var min = Math.min();
var max = Math.max();
min < max

最小值与最大值比较,我相信很多小伙伴像臭臭一样觉得会返回  true ,其实不然哟~

Math.min()和Math.max(),这两个方法,如果给它们传递多个参数,众所周知,就会返回其中的最大/小值。可是,如果不传递参数,就会有一个很有意思的现象:Math.min()返回值是Infinity(正无穷大),Math.max()返回值是-Infinit(负无穷小)。所以,正确的比较结果是Math.min() > Math.max()。

第六题:接下来我们来看一下定时器的一些小例子吧;

$(function(){
  console.log(1);
  setTimeout(function(){
    console.log(2);
  },1000);
  setTimeout(function(){
    console.log(3);
  },0);
  console.log(4);
})
小伙伴们觉得输出的顺序是什么呢?浏览器解读代码是单线程的,遇到异步加载或者定时器时会有时间设定;正确的输出顺序是“1,4,3,2”。有不明白的小伙伴可能会问为什么定时器为0时还是会后执行呢,因为在浏览器中解读到定时器时就像人的大脑常遇到一个问题时会反应一下,这么理解起来应该不是困难的了吧~


好了,小伙伴们,今天的面试题分享就这么多了~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值