美文网首页
7-20js 测试题

7-20js 测试题

作者: 小生菜呢 | 来源:发表于2019-07-22 00:14 被阅读0次

1.如何正确的定义变量

2.下边哪一项会弹 1?

    A:if('2' < '15') {alert(1)};

    B:if(15 - 15) {alert(1)};

    c:if('2' < '15') {alert(1)} else {alert(2)}

    D:if('5' + 0) {alert(1)}

正确答案 D

解析:A选项:字符串比较的时候,会按照Unicode编码比较,而‘1’的Unicode编码小于‘2’的Unicode编码,所以字符串‘1’小于字符串‘2’,‘15’ 和‘2‘比较时,会先比较第0位,而’15‘中的第0位 ’1‘ 事小于’2‘的,则认定’15‘小于’2‘,并不会继续向后比较,所以A和C是错误的

B选项:数字15-15等于0,0转换成布尔值是false,所以B不成立

D选项:’5‘和0相加,就是字符串’5‘拼接数字0  得到字符串50‘,非空字符串转成布尔值就是true,所以D是正确的

3.现有如下html结构

    <ul>

        <li>click me</li>

        <li>click me</li>

        <li>click me</li>

        <li>click me</li>

    </ul>

运行如下代码:

      var elements = document.getElementsByTagName('li');

       var length = elements.length;

       for(var i = 0; i < length; i++) {

            elements[i].onclick = function() {

                  alert(i)

             }

         }

A:依次弹出1,2,3,4

B:依次弹出0,1,2,3

C:依次弹出3,3,3,3

D:依次弹出:4,4,4,4

正确答案:D

解析:这里注意 alert(i)是在点击事件中,但是当我们页面可以点击时,循环已经执行完了,所以拿到的结果是循环执行完后的结果:4,4,4,4

问:为什么点击事件执行时,for循环已经结束?看下图

问:为什么不是3,3,3,3

循环的结束条件i<length,也就是i<4, 所以当循环结束的时候,i肯定是等于4的。

扩展:let 声明变量i 得到的结果为啥是1,2,3,4(有时间再写)

4.以下输出结果为

var User = {

        count: 1,

        getCount: function() {

          return this.count

        }

      }

      console.log(User.getCount()) // what?

      var fun = User.getCount

      console.log(fun) // what?

A 1 undefined ;

B 1 1 ;

C undefined 1

D undefined undefined;

正确答案:A

解析:这道题张店考察大家对this指向的理解。

1.首先User是一个对象,它有两个属性count和getCount。

count的值是数字1,getCount的值是一个function,

User.getCount(),当作为对象的方法调用时,this指向当前对象,那么this的指向就是User,

this.count等于User.count  而函数getCount就是return this.count,

所以console.log(User.getCount())的结果是1

2.var fun = User.getCount

  console.log(fun) // what?

将 User.getCount赋值给 fun

当运行fun时,并不是作为对象的方法被调用的,那么这个this就是指向window的,但是我们并没有在window里定义count这个变量,那么return this.count  自然就找不到了,所以是undeind

总结一句:当一个函数(方法)作为一个对象的方法调用时,this指向的是当前对象。其余情况下被调用,this指向的是window。也可以理解为,谁调用(这个方法),this就指向谁。

5

正确答案:C

解析:obj.method

先看method,这是一个函数,它的主体内容的而第一步就是调用了另一个函数,fn()

fn()是直接定义在window中的,所以this指向window,而length呢也是定义在window中的,所以打印结果为10.

往下第二步,arguments[0]()

arguments呢,是实参的集合,也就是说,传进来几个参数,arguments里就有几个参数  obj.method(fn,1,2)   调用method时传了三个参数,所以arguments就等于{0:fn,1:1,2:2}

再来看arguments[0],是不是就是 fn    那么arguments[0]()是不是就等于 fn()

也就是说,fn又被argumens调用了一次,再回过头看fn函数

function fn(){

console.log(this.length)

}

arguments是实参的集合,它本身是一个对象(类数组),它调用了自己下边的方法,。第4题中说到,作为对象的属性被调用,this就指向当前对象。那么this就是指向的arguments

那么此时的this.length等于arguments.length

arguments里有啥?  不是有三个属性吗,有三个属性,不就是arguments的长度吗?所以此时答应console.log(this.length) 得到的结果就是3

6. 以下代码运行后,结果为

var i = 0;

alert( ++i == i++ );

A: true

B,false

C,undefined

D,NaN

正确答案:A

解析:1.这里要注意运算的优先级,先执行++i,此时i变成了1

再执行i==i,(注意,i++中的++运算优先级最低,会运算完==后再运行++)

分步骤执行就是 第一步:++i(此时i===1)

第二步:i==i(1等于1,true)

第三步i++(此时是2,但是它是已经比较完是否相等后再执行的,所以结果是true)

最后总结下,此运算顺序就是这样:((++i)==i)++

7.如下代码输出的结果是什么:

console.log(1+ "2"+"2");

console.log(1+ +"2"+"2");

console.log("A"- "B"+"2");

console.log("A"- "B"+2);

A.122 122 NaN NaN

B.122 32 NaN NaN2

C.122 32 NaN2 NaN

D.122 32 NaN2 NaN2

正确答案:B

解析:A. 1+’2‘+’2‘  :+碰到字符串就会执行字符串拼接,所以结果是 ’122‘

B.1+ +’2‘+’2‘: 这里重点注意(+’2‘),这个+号,代表的是正负的正号,正号本身会把字符串转为正常数字,所以就变成了1+2+’2‘ 最终结果为:’32‘

C:'A'-'B'+'2':-只能用来数字计算,所以’A‘-'B'是NaN,    NaN+'2'会进行字符串转换(拼接)所以结果是NaN2

D:根据C得到'A'-'B'结果为NaN,NaN+2 这里进行的是数字运算,NaN和任何数字进行运算都是NaN,所以最后结果是:NaN

8.阅读下列程序,写出 x,y,z 最后的值

A. 1 2 4

B. 1 4 4

C. 4 2 4

D. 1 1 1

正确答案:B

首先这里会进行预解析

然后再仔细看一下 add 重名了,所以第二个add会覆盖第一个add

最终变为上图的运行方式

首先x并没有做任何复制和改变

而y和z的操作是完全一样的所以最后的结果都是4,也就是答案B:1,4,4

9. 看下列代码输出什么?

var foo = "11"+2-"1";

console.log(foo);

A: 1121

B: 131

C: 111

D: 112

正确答案:C

解析:”11“+2,是字符串拼接结果为”112“,

在js中减号只能执行剑法运算,所以其他类型会被转化为数字进行运算,也就是112-1 得到结果为111

10.请给出这段代码的运行结果

A.1 1

B.1 2

C.2 1

D.2 2

正确答案:C

解析:先执行函数中的alert(bb),

但是函数中声明了形参bb,所以bb=2,知识为局部变量bb重新赋值为2

并不影响外边的变量,函数外的变量bb依然是1

11.以下代码的运行结果是

A. 5 5

B. undefined,undefined

C. 5,undefined

D. 5,Uncaught ReferenceError: a is not defined

正确答案:C

解析:这里还是作用域问题,注意:vara=b=5,这是知识给a加了声明,也就是说a是证明在函数内的,b没有声明,没有声明就会变成全局变量(严格模式会报错)

在匿名函数外打印b,b是全局的,所以结果是5,到那时a是生命在函数内的,并不是全局的,所以a找不到,就报错了。

12.下面的等式成立的是()

A, parseInt(12.5) == parseFloat(12.5)

B, Number('') == parseFloat('')

C, isNaN('abc') == NaN

D, typeof NaN === 'number'

正确答案:D

解析:A :  parseInt(12.5)结果为 12 ,parseFloat(12.5) 结果为 12.5, 12 == 12.5 结果自然不能成立

B: Number('')结果为0, parseFloat('')结果为 NaN,结果自然也不相等啊

C: isNaN('abc') == NaN,只要看到了 NaN 那等式必须不成立

D:typeof的返回值是个字符串类型。NaN是number类型,typeof NaN就会返回值’number

‘typeOf 的 返回值是 数据的类型,他的返回值类型是个字符串,也就是说type( type( Number))是个字符串

13.JavaScript 定义 var a="40",var b=7,则执行 a%b 会得到()

A.5

B."5"

C.undefined

D.null

正确答案:A

解析:取模会隐士类型转换成数字,结果自然 40%7 = 5

14.下列写法正确的是?()

正确答案:A

解析:一个for循环包含3各部分,第一部分是包含一个变量,第二部门包含循环推出的条件,第三部分是每次循环最后要执行的操作。

也可以解释为: for 语句的语法 for(初始值;判断条件;自增语句){执行语句}

B选线,用if明显不对。C选项,每一项用逗号隔开不对,

D选项也是语法错误。 符合结果的只有A,A也包含fou循环成立的三个部分。

相关文章

  • 7-20js 测试题

    1.如何正确的定义变量 2.下边哪一项会弹 1? A:if('2' < '15') {alert(1)}; ...

  • 测试

    测试题

  • 测试

    测试题

  • Articulate Storyline教程(四):创建测试(一

    测试题类幻灯片共有五种:等级测试类幻灯片、调查测试题类幻灯片、自由形态测试题类幻灯片、题库集类幻灯片、测试结果类幻...

  • 测试

    测试题不二十古人名

  • Chapter 20

    208/4/2017 5:23:40 PM 20章 GUI 测试题 测试题 构成 GUI 的按钮、文本域等元素有哪...

  • 【Python爬虫】开班测试题很多不会

    开班测试题仍有很多不会

  • 测试题

    #1. 下面的语句是否可以执行(可以) SELECT last_name,job_id,salary AS sa...

  • 测试题

    测试规则: 请将各题得分相加。得到最后分数,然后看结果! 测试题目: 1、你认为谈恋爱的目的是什么? A、最终找到...

  • 测试题

    一、选择题 1.Which four options describe the correct default v...

网友评论

      本文标题:7-20js 测试题

      本文链接:https://www.haomeiwen.com/subject/rnbvlctx.html