JavaScirpt笔试题---不断更新

第一套(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

function aa(bb) {     bb = 2;     alert(bb); };

在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}里的值就是多少

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值