通过一段时间的整理,又有选中的面试题目与小伙伴们分享喽~接下来看一下以下几个面试题吧!
第一题:
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()。
好了,小伙伴们,今天的面试题分享就这么多了~~~