1.什么是Web Worker?
A.运行在后台的JavaScript程序,会影响页面性能。
B.运行在后台的JavaScript程序,不会影响页面性能。
C.都不正确
D.运行在后台的css程序,不会影响页面性能
正确答案:B
解析:web worker在后台运行的进程,比如一个计算,它会在后台进行计算,再给页面赋值,所以不影响页面性能。
2.语句var arr=[a,b,c,d]执行后,数组arr中每项都是一个整数,下面得到其中最大整数语句正确的是哪几项?
A.Math.max(arr)
B.Math.max(arr[0],arr[1],arr[2],arr[3])
C.Math.max.call(Math,arr[0],arr[1],arr[2],arr[3])
D.Math.max.apply(Math,arr)
正确答案:B.C.D
解析:因为函数Math.max(x)的参数是Number类型,可以是小数,整数,正数,负数或者0,如果不是以上类型就会返回NAN,Function.call()可以传入任意多个参数,Function.apply()第二个参数以数组形式传递。
3.假设val已经声明,可定义为任何值。则下面js代码有可能的输出结果为:
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
A.Value is define
B.Value is undefine
C.define
D.undefine
E.Value is define 或者 Value is undefine
F.define 或者 undefine
G.其它选项都有可能
正确答案:C
解析:+号优先级高于三目运算符低于括号,所以代码执行顺序是('Value is ' + (val != '0')) ? 'define' : 'undefine',而?前面的表达式运算结果无论是字符串'Value is true',还是字符串'Value is false'。转换为布尔值都是true,所以打印出来的结果是字符串‘define’。
4.js数组的方法中,哪些方法不能改变自身数组?
A.pop
B.splice
C.sort
D.concat
正确答案:D
解析:pop()方法用于删除数组的最后一个元素,并返回被删除的最后一个元素,这样的话数组就被改变了。
(function() {
var x=foo();
var foo=function foo() {
return “foobar”
};
return x;
})();
A.foo()
B.类型错误
C.undefined
D.foobar
正确答案:B
解析:foo变量“被提前”了,但是他的赋值(也就是函数)并没有被提前,从这一点上来说,和前面我们所讲的变量“被提前”是完全一致的,并且,由于“被提前”的变量的默认值是 undefined。函数声明可以被提前,但函数表达式不能被提前。
所以以上程序:
var x = foo();
var foo=function foo() {...}
以上语句的变量声明会提升但是定义不会提升:
var foo;
var x = foo();
foo = function foo() {...}
当执行到x=foo()时,所以会返回:TypeError:foo is not a function