开班考试错题修改

在这里插入图片描述
分析:A选项 getElementsByClassName() 方法返回文档中所有指定类名的元素集合,作为 NodeList 对象。B选项 getElementsByTagName() 方法返回一个动态的包含所有指定标签名的元素的HTML集合HTMLCollection。 C选项 Document的方法 getElementById()返回一个匹配特定 ID的元素。D选项 该方法与 getElementById() 方法相似,但是它查询元素的 name 属性,而不是 id 属性。

//    16.以下 javascript 代码,在浏览器中运行的结果是(B)
            var a = 100 < 0 || typeof(100 + '');
            console.log(a);
            // A. true
            // B. string
            // C. undefined
            // D. false

分析:这道题目考察的是或运算符,前面的 100 < 0 的Boolean值是false,后面的typeof(‘100’)里面是字符串的拼接,最终的typeof返回的结果是"string"。然后Boolean(“string”)的返回值true,所以最终a的值是string。

  // 19.下段代码的的显示结果是?(A)
                var x = new Boolean(false);
                if (x) {
                alert('hi');
                }
                var y = Boolean(0);
                if (y) {
                alert('hello'); 
                }
                // A. hi
                // B. hi hello
                // C. hello
                // D. 不显示

分析: var x = new Boolean(false);通过构造函数生成一个Boolean {false}的对象,对象转化为boolean值是真,所以后面的hi可以打印输出,但是0转化为boolean是假,所以说y后面的打印hello不可执行。
20.下面哪些执行结果为true?(B C E)

A. 'foo' == new function(){ return String('foo'); };
B. 'foo' == new function(){ return new String('foo'); };
C. [] == 0
D. ![]
E. !0

杂交方式的比较:引用值在和原始值进行比较的时候会调用valueof或者是tostring方法,当使用valueof返回的是一个引用值而不是原始值的时候,就会调用tostring方法进行判断。
分析:先分析CDE,C选项[]的valueof在调用之后依旧是一个数组,所以说要调用tostring方法,结果是""空字符串,接着空字符串在进行转化为数字0.0等于0所以说c选项是true。
D选项是c选项的反面将空数组的最终隐式结果取反之后,应该是true,E选项非0当然是真,因为0的布尔值是false。
关于A、B选项,经过验证可以看出来
在这里插入图片描述

在这里插入图片描述
A产生的是一个是一个空对象,而b产生的才是一个真正的字符串’foo’。

  // 21.下面这段JS程序的执行结果是:(D)
                var user = {
                count: 1,
                getCount: function () {
                    return this.count;
                }
                };
                var func = user.getCount;
                console.log(func());
                // A. this.count
                // B. 1
                // C. 报错
                // D. undefined

分析:分析代码可以看出来,func得到的是一个user中的函数getCount,那么最终输出的是func()执行的结果,返回的是this.count那么this的指向应该是window,输出的是window.count,所以应该是undefined。

 // 26.以下代码执行后,a.x 和 b.x 的结果分别是?(C)
                    function A(x) {
                    this.x = x;
                    }
                    A.prototype.x = 1;
                    function B(x) {
                    this.x = x;
                    }
                    B.prototype = new A();
                    var a = new A(2), 
                        b = new B(3);
                    delete b.x;
                    // A. 2, 3
                    // B. 2, 1
                    // C. 2, undefined
                    // D. 其他几项都不对

分析:最后输出a.x和b.x的时候进行分别分析。第一个a.x首先a是由构造函数A构造出来并且传入实际参数2,所以a.x的值肯定是2,因为本身有x这个属性,不需要到a的原型链上进行寻找。关于b.x,B.prototype = new A();b的原型链是a,但是 delete b.x;之后并没有x这个属性,但是 function B(x) {
this.x = x;
}隐式的声明了var b ,所以最终的结果是undefined。

   // 28.以下代码,在浏览器中执行的结果是(D)。
                    var A = { n: 7777 };
                    var B = function () { this.n = 9999 };
                    var C = function () { var n = 8888 };
                    B.prototype = A;
                    C.prototype = A;
                    var b = new B();
                    var c = new C();
                    console.log(c.n,A.n);
                    A.n ++;
                    console.log(b.n);
                    console.log(c.n);
                    // A. 9999 8889
                    // B. 10000 8888
                    // C. 7778 8889
                    // D. 9999 7778

分析:首先由于B.prototype = A; C.prototype = A;BC的原型都是A,但是var B = function () { this.n = 9999 };this直接指向b,所以在A.n ++;的时候并没有对B造成影响,所以B仍然是9999,但是我们在A.n++之前 console.log(c.n,A.n);发现
在这里插入图片描述
所以说这里的c.n,A.n是同一个值,所以最后的结果是7778.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值