面试题---杂项

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

第一题:

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()。


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

猜你喜欢

转载自blog.csdn.net/wxy_little1025/article/details/79847771