第一套(50题)
1、执行以下程序,输出结果为()
var one;
var two = null;
console.log(one == two,one === two);
A、true false B、
true true C、false false D、false true E、抛出异常
解析:A ; 变量one只声明未赋值,所以其值为undefined,在使用“==”对undefined和null进行比较时,不能将null和undefined转换成其他任何值,并且规定undefined == null返回结果为true,而使用“===”进行比较时,由于“===”需要严格区分数据类型,故undefined === null返回结果为False,A选项正确。
2、请给出下面这段代码的运行结果()
<SCRIPT LANGUAGE="JavaScript">
var bb = 1;
function aa(bb) {
bb = 2;
alert(bb);
};
aa(bb);
alert(bb);
</SCRIPT>
A、1 1 B、1 2 C、2 1 D、2 2
解析 C;这道题考察是局部变量和参数传递的问题。
1 |
|
在aa函数中,bb是以传值的方式传入的,在函数中,会重新定义一个bb变量,并将其值覆为2,并不影响函数体外的bb变量,所以其值仍然为1.
3、下面js数组的方法中,哪些方法不能改变自身数组?
A、pop B、splice C、sort D、concat
解析:D;
pop()方法用于删除数组的最后一个元素,并返回被删除的最后一个元素,这样的话数组就被改变了。
splice()方法可以对数组中已经存在元素进行删除,也可以添加元素到数组中。
sort()方法对数组中所有的元素都进行排序,如果没有提供比较函数compareFunction,则按照字符串的Unicode码的顺序进行排序。
所以以上三种方法都改变了数组。
而 concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,返回一个新的数组。该数组是通过把所有的arrayX参数添加到arryaObject中生成的,如果要进行 concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。
4、在浏览器控制台中执行以下代码,输出的结果是
function test() {
var n = 4399;
function add(){
n++;
console.log(n);
}
return {n:n,add:add}
}
var result = test();
var result2 = test();
result.add();
result.add();
console.log(result.n);
result2.add();
A、4400 4401 4399 4400 B、4400 4401 4401 4402
C、4400 4400 4399 4400 D、4400 4401 4399 4402
E、4400 4401 4401 4400
解析:
test构成了一个闭包,result跟result2各自有自己的test作用域,所以最后result2.add()结果是4400
第三个,这里{n:n}是对变量n里的值进行缓存,而不是本身n这个指针变量,这样生成add的时候n指向的值是多少{n:n}里的值就是多少