JavaScript理论题(一)

1.

1

2

3

4

5

6

7

var person={fname:"John",lname:"Doe",age:25};

var txt="";

for (x in person)

{

  txt=txt + person[x];

}

alert(txt);

输出为?

JohnDoe25
fname:"John",lname:"Doe",age:25
fname:John,lname:Doe,age:25
fnamelnameage

2.获取 input 节点的正确方法是(  )



  • document.querySelectorAll('file')[0] //undefined
  • document.getElementById('file')[0] // undefined
  • document.getElementByTagName('file')[0] //undefined
  • document.getElementById('file') //ID返回的是一个element而不是一个集合。

 

 

 

3.下面有关JavaScript中系统方法的描述,错误的是?

parseFloat方法:该方法将一个字符串转换成对应的小数
isNaN方法:该方法用于检测参数是否为数值型,如果是,返回true,否则,返回false。
escape方法: 该方法返回对一个字符串编码后的结果字符串
eval方法:该方法将某个参数字符串作为一个JavaScript执行

解析:isNaN,如果是数字,则返回false,不是数字,返回true。

4.在页面加载完成后,如果想动态地改变网页的标题,可以通过(C)

是不可能的
document.write(“新的标题内容”)
document.title = ''
document.changTitle(“新的标题内容”)

5.下列代码

1

2

3

var obj={}

……..

obj.hasOwnProperty("val")

中hasOwnProperty的作用是?

判断obj对象是否具有val属性
判断obj对象是否具有val的值
判断obj的原型对象是否具有val的属性
判断obj的原型对象是否具有val的值

6.下面js数组的方法中,哪些方法不能改变自身数组?

pop
splice
sort
concat

解析:

Array对象中的方法:

不改变原数组的有

concat():连接数组

join():数组=>字符串

slice():截取数组的一部分

改变原数组的有:

pop()删除并返回数组最后一个元素,shift()与其相反,删除第一个

push()向数组末添加>=1个元素,返回数组新长度,unshift()与其相反,向开头添加

sort(函数)对数组元素排序 

splice()改变(删除、替换)数组内部元素,返回由被删除项目组成的新数组(如果有的话)

7.

执行以下程序,输出结果为()

var arr = [2,1,3,5,9];

var count = 0;

arr.forEach((val1,val2)=>{

        count++;

        if(count % 3 == 0){

            return;

        }

        console.log(val1);

})

2 1

0 1

0 1 3 4

2 1 5 9

解析:在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错

8.以下哪个表达式的值为true?

'1' === 1
isNaN(1/0)  0/0才是true
1 in [1] //是找在【1】里是否有index为1的值,显然,这个数组只有index=0的值,所以false
1 && 2 > 1 优先级先2>1所以true,1&&true也是true

9.下列window方法中,可以显示对话框的一项是()

confirm()
alert()
prompt()
open()

解析:confirm是显示对话框,alert是弹窗,prompt是输入,open是打开新的页面。

10.

arr.sort((a,b)=>b-a);

console.log(arr);

//解析:B--A是降序

11.请问以下JS代码的输出是什么?

1

2

3

4

5

6

7

8

9

10

11

12

13

let A = function() {}// A={}

A.prototype.a = 1; //A.prototype={a=1}

let B = new A(); //B={}

A.prototype = { //这里重新定义了A.prototype={b:2,c:3}

  b: 2,

  c: 3

}

let C = new A();// C={}

A.prototype.d = 4;// A.prototype={b:2,c:3,d:4}

console.log(B.a);

console.log(B.b); //所以它是undefined

console.log(C.c);

console.log(C.d)

1、2、3、4
1、undefined、3、4
1、undefined、undefined、undefined
undefined、2、3、4

12.执行以下程序,输出结果为()

var a = 100;

function a(){

var a = 200;

console.log(a);

}

a();

A.100

B.200

C.抛出异常

D.f a(){var a = 200;console.log(a);}

解析:函数提升在变量提升之前,所以函数声明有效,变成了这样:

 function a() {
    var a = 200;
    console.log(a);
  }
  var a;
  a = 100;
  a();

所以可以看出,后来的a是一个变量,并不是一个函数,所以无法调用a(),所以运行不到log输出a。

13.当用户打开一个网页时,想一直停留在当前打开的页面,禁止页面前进和后退,以下正确的是(      )

window.history.forward(1); //防止后一个页面跳转
window.history.back(1); //以历史页面为基准后退一个页面==后退按钮
window.history.go(-1); //跳转到前一个页面 ,
window.history.forward(-1); //防止前一个页面跳转

如果是window.history.go(0),这样这个网页就会永远停留再这个页面,不能前进后退了。

 

 

 

你可能感兴趣的:(javascript,linq,开发语言)