『⾯试题』WEB前端⾯试选择题解答(共36题)第1题
["1", "2", "3"].map(parseInt)
A:["1", "2", "3"]
B:[1, 2, 3]
C:[0, 1, 2]
D:other
解释:该题⽬的答案为:[1, NaN, NaN],即选择D。该题⽤到了map与parseInt;parseInt() 函数的语法是parseInt(string, radix);string 必需。要被解析的字符串。
radix可选。表⽰要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数⼩于 2 或者⼤于 36,则 parseInt() 将返回 NaN。
实际上 map⾥⾯的callback函数接受的是三个参数 分别为元素 下标和数组 (虽然很多情况只使⽤第⼀个参数)
回调函数的语法如下所⽰:
function callbackfn(value, index, array1)
可使⽤最多三个参数来声明回调函数。
例:
var a=["1", "2", "3", "4","5",6,7,8,9,10,11,12,13,14,15];
a.map(parseInt);
返回结果为:[1, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, 9, 11, 13, 15, 17, 19]
第2题
[typeof null, null instanceof Object]
A: ["object", false]
B: [null, false]
C: ["object", true]
D: other
解释:
考察typeof运算符和instanceof运算符,上MDN上看⼀下typeof运算符,⼀些基础类型的结果为:
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Any other object "object"
Array "object"
null instanceof 任何类型 都是false,所以选A。
第3题
[ [3,2,1].reduce(Math.pow), [].reduce(Math.pow)]
A: an error
B: [9, 0]
C: [9, NaN]
D: [9, undefined]
解答:这题考的Math.pow和duce
Math.pow(base, exponent)接受两个参数:基数、需要计算的次⽅
reduce传递给其作为参数的函数⼏个值:
previousValue:上⼀次计算的结果
currentValue:当前元素的值
index: 当前元素在数组中的位置
array:整个数组
reduce本⾝接受两个参数,callback和initialValue,分别是reduce的回调函数和计算初始值--也就是第⼀次reduce的callback被调⽤时的previousValue的值,默认为0
reduce在数组为空且没有定义initialValue时,会抛出错误,在⽕狐下报错为:TypeError: reduce of empty array with no initial value所以选A
第4题
var val = 'smtg';
console.log('Value is ' + (val === 'smtg') ? 'Something' : 'Nothing');
A: Value is Something
B: Value is Nothing
C: NaN
D: other
解答:这题考的javascript中的运算符优先级,这⾥'+'运算符的优先级要⾼于'?'所以运算符,实际上是 'Value is true'?'Something' : 'Nothing',当字符串不为空时,转换为bool为true,所以结果为'Something',选D
第5题
var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
A: Goodbye Jack
B: Hello Jack
C: Hello undefined
D: Hello World
这题考的是javascript作⽤域中的变量提升,javascript的作⽤于中使⽤var定义的变量都会被提升到所有代码的最前⾯,于是乎这段代码就成了:
var name = 'World!';
(function () {
var name;//现在还是undefined
if (typeof name === 'undefined') {
name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
这样就很好理解了,typeof name === 'undefined'的结果为true,所以最后会输出'Goodbye Jack',选A
第6题
var END = Math.pow(2, 53);
var START = END - 100;
var count = 0;
for (var i = START; i <= END; i++) {
count++;
}
console.log(count);
A: 0
B: 100
C: 101
D: other
解答:这题考查javascript中的数字的概念:⾸先明确⼀点,javascript和其他语⾔不同,仅有⼀种数字,
IEEE 754标准的64位浮点数,能够表⽰的整数范围是-2^53~2^53(包含边界值),所以Math.pow(2, 53)即为javascript中所能表⽰的最⼤整数,在最⼤整数在继续增⼤就会出现精度丢失的情况,END + 1的值其实是等于END的,这也就造成了死循环。所以选D。
第7题
var ary = [0,1,2];
ary[10] = 10;
ary.filter(function(x) { return x === undefined;});
A: [undefined × 7]
B: [0, 1, 2, 10]
C: []
D: [undefined]
解答:选择C Array.prototype.filter is not invoked for the missing elements(缺少的元素,不会调⽤过
滤器)。
第8题smtp服务器版本信息可被获取
var two  = 0.2
var one  = 0.1
var eight = 0.8
var six  = 0.6
[two - one == one, eight - six == two]
A: [true, true]
B: [false, false]
C: [true, false]
D: other
phpstudy数据库无法使用
解答:浮点数计算时的精度丢失问题。.chrome中计算出来的结果:[0.1, 0.20000000000000007],也就是[true, false],最终答案选C。
第9题
function showCase(value) {
switch(value) {
case 'A':
console.log('Case A');
break;
case 'B':
maven导入依赖后爆红
console.log('Case B');web前端基础面试题
break;
case undefined:
console.log('undefined');
break;
default:
console.log('Do not know!');
}
}
showCase(new String('A'));
B: Case B
C: Do not know!
D: undefined
php逐行读取文件解答:此题考察的是关于new string();其实就是new⼀个实例对象。要匹配的也是object;所以答案是Do not know!,选择C。
第10题
function showCase2(value) {
switch(value) {
case 'A':
console.log('Case A');
break;
case 'B':
console.log('Case B');
break;
case undefined:
console.log('undefined');
break;
default:
console.log('Do not know!');
}
}
showCase(String('A'));
A: Case A
B: Case B
C: Do not know!
D: undefined
和上题原理⼀样,不过这⾥没有使⽤new来⽣成字符串,所以⽣成的结果就是原始字符串,相当于showCase('A'),所以结果就是A了
第11题
function isOdd(num) {
return num % 2 == 1;
}
function isEven(num) {
return num % 2 == 0;
}
function isSane(num) {
return isEven(num) || isOdd(num);
}
var values = [7, 4, '13', -9, Infinity];
values.map(isSane);
A: [true, true, true, true, true]
B: [true, true, true, true, false]
C: [true, true, true, false, false]
D: [true, true, false, false, false]
前两个基本上没什么疑问,必然是true
'13'在进⾏计算前则会进⾏隐式类型转换,详细参见,这⾥的规则就是将字符串通过Number()⽅法转换为数字,所以结果为13 % 2 ,也就是true ⽽JS中负数取模的结果是负数,这⾥-9%2的结果实际上是-1,所以为false
⽽Infinity对任意数取模都是NaN,所以是false
综上,结果为[true, true, true, false, false],也就是C
第12题
parseInt(3, 8)
parseInt(3, 2)
A: 3, 3, 3
B: 3, 3, NaN
C: 3, NaN, NaN
D: other
还是parseInt的题,考的和第⼀题类似,第⼀个值为3没什么好说的。如果出现的数字不符合后⾯输⼊的进制,则为NaN,所以第⼆个值为NaN。⽽radix为0时的情况第⼀题下⾯有介绍,这⾥也是⼀样为默认10,所以结果为3,所以答案为3, NaN, 3,选D
第13题
Array.isArray( Array.prototype )
A: true
B: false
C: error
D: other
死知识,,这是MDN官⽅给的例⼦....。所以选A。
第14题
var a = [0];
if ([0]) {
console.log(a == true);
} else {
console.log("wut");
}
A: true
B: false
C: "wut"
D: other
同样是⼀道隐式类型转换的题,不过这次考虑的是'=='运算符,a本⾝是⼀个长度为1的数组,⽽当数组不为空时,其转换成bool值为true。
⽽==左右的转换,会使⽤如果⼀个操作值为布尔值,则在⽐较之前先将其转换为数值的规则来转换,Number([0]),也就是0,于是变成了0 == true,结果⾃然是false,所以最终结果为B
cubox类似
第15题
[] == []
A: true
B: false
C: error
D: other
这题考的是数组字⾯量创建数组的原理和==运算符,⾸先JS中数组的真实类型是Object这点很明显typeof []的值为"object",⽽==运算符当左右都是对象时,则会⽐较其是否指向同⼀个对象。⽽每次调⽤字⾯量创建,都会创造新的对象,也就是会开辟新的内存区域。所以指针的值⾃然不⼀样,结果为 false,选B
第16题
'5' + 3
'5' - 3

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。