JavaScript题目练习

1、以下哪一条Javascript语句会产生运行错误?

正确答案: A 你的答案: D (错误)

A var obj=( );
B var obj=[ ];
C var obj={ };
D var obj=/ /;

2、触摸事件包括以下哪几种?()

正确答案: A B C D 你的答案: A B D (错误)

touchStart
touchMove
touchCancel
touchEnd

解析:以下是四种touch事件

touchstart: //手指放到屏幕上时触发

touchmove: //手指在屏幕上滑动式触发

touchend: //手指离开屏幕时触发

touchcancel: //系统取消touch事件的时候触发,这个好像比较少用

每个触摸事件被触发后,会生成一个event对象,event对象里额外包括以下三个触摸列表

touches: //当前屏幕上所有手指的列表

targetTouches: //当前dom元素上手指的列表,尽量使用这个代替touches

changedTouches: //涉及当前事件的手指的列表,尽量使用这个代替touches

3、下面哪些属于JavaScript的typeof运算符的可能结果:()

正确答案: A C F G 你的答案: C D E F G (错误)

symbol
int
boolean
null
array
undefined
string

JavaScript题目练习_第1张图片

4、 语句var arr=[a,b,c,d];执行后,数组arr中每项都是一个整数,下面得到其中最大整数语句正确的是哪几项?

正确答案: B C D 你的答案: C (错误)

Math.max(arr) //因为函数 Math.max(x);的参数是Number类型,可以是小数,整数,正数,负数或者是0,如果不是上面所述类型就会返回NaN.
Math.max(arr[0], arr[1], arr[2], arr[3]) //可以
Math.max.call(Math, arr[0], arr[1], arr[2], arr[3]) // Function.call()可以传入任意多个参数
Math.max.apply(Math,arr) // Function.apply()第二个参数以数组形式传递

5、以上 javascript 代码,在浏览器中运行的结果是

正确答案: A 你的答案: B (错误)

JavaScript题目练习_第2张图片

1 2 3
undefined 2 1
报错
1 2 1
var foo = {n:1};
(function(foo){            //形参foo同实参foo一样指向同一片内存空间,这个空间里的n的值为1
    var foo;               //优先级低于形参,无效。
    console.log(foo.n);    //输出1
    foo.n = 3;             //形参与实参foo指向的内存空间里的n的值被改为3
    foo = {n:2};           //形参foo指向了新的内存空间,里面n的值为2.
    console.log(foo.n);    //输出新的内存空间的n的值
})(foo);
console.log(foo.n);        //实参foo的指向还是原来的内存空间,里面的n的值为3.

6、下面不属于JavaScript的基本数据类型的是( )

正确答案: B C 你的答案: A D (错误)

String
Function
Integer
undefined

解释:基本类型分为以下六种:

  • string(字符串)
  • boolean(布尔值)
  • number(数字)
  • symbol(符号)
  • null(空值)
  • undefined(未定义)
  1. string 、number 、boolean 和 null undefined 这五种类型统称为原始类型
  2. ymbol是ES6中新增的数据类型,symbol 表示独一无二的值
  3. null 和 undefined 通常被认为是特殊值,这两种类型的值唯一,就是其本身。

7、以下对闭包(closure)理解正确的有 ()

正确答案: A B C D 你的答案: A B C D (正确)

A、闭包是指有权访问另一个函数作用域中变量的函数;
B、函数内再嵌套函数,返回到外部形成闭包;
C、内部函数可以引用外层的参数和变量
D、参数和变量不会被垃圾回收机制回收

闭包的作用 :1 可以读取函数内部的变量 2 可以把变量始终保存在内存中

闭包的写法 :1 一个函数(即外部函数)里面包含另一个函数(即内部函数),并且return返回这个内部函数, 然后内部函数在定义内部函数之外的作用域被调用,这时的内部函数就是一个闭包了。

2 内部函数引用了外部函数的变量,这个变量不会被销毁,因为闭包需要这个变量, 所以通过闭包可以访问闭包保存的变量 function foo(){ var n = 1; function innerFoo(){ n += 1; console.log(n); } return innerFoo; } var func = foo(); func();

2, 产生闭包innerFoo(),变量n保存在内存中 func();

3 闭包的缺点 :1 因为闭包的变量保存在内存中,内存泄漏,对内存的消耗很大,所以不要滥用闭包 闭包常用的地方: 1 es5 for循环事件监听 2 函数里使用了定时器 3 封装许多高级的功能集 减少闭包使用可以用立即执行函数传递变量

8、哪种输入类型定义滑块控件?

正确答案: D 你的答案: C (错误)

search
controls
slider
range
button 定义可点击的按钮(大多与 JavaScript 使用来启动脚本)
checkbox 定义复选框。
color 定义拾色器。
date 定义日期字段(带有 calendar 控件)
datetime 定义日期字段(带有 calendar 和 time 控件)
datetime-local 定义日期字段(带有 calendar 和 time 控件)
month 定义日期字段的月(带有 calendar 控件)
week 定义日期字段的周(带有 calendar 控件)
time 定义日期字段的时、分、秒(带有 time 控件)
email 定义用于 e-mail 地址的文本字段
file 定义输入字段和 “浏览…” 按钮,供文件上传
hidden 定义隐藏输入字段
image 定义图像作为提交按钮
number 定义带有 spinner 控件的数字字段
password 定义密码字段。字段中的字符会被遮蔽。
radio 定义单选按钮。
range 定义带有 slider 控件的数字字段。
reset 定义重置按钮。重置按钮会将所有表单字段重置为初始值。
search 定义用于搜索的文本字段。
submit 定义提交按钮。提交按钮向服务器发送数据。
tel 定义用于电话号码的文本字段。
text 默认。定义单行输入字段,用户可在其中输入文本。默认是 20 个字符。
url 定义用于 URL 的文本字段。

9、HTML5 提供两种新对象,通过 javascript API 来存储本地数据,这两种对象是()。

正确答案: B 你的答案: C (错误)

cookies 和 sessionVariables
localStorage 和 sessionStorage
cookies 和 locationObjects

Web Storage分类
Web Storage实际上由两部分组成:sessionStorage与localStorage。
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

10、js数组的方法中,哪些方法不能改变自身数组?()

正确答案: D 你的答案: C (错误)

A、pop()
B、splice()
C、sort()
D、concat()

Array对象中的方法:

不改变原数组的有

concat():连接数组

join():数组=>字符串

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

改变原数组的有

pop()删除并返回数组最后一个元素,

shift()与其相反,删除第一个

push()向数组末添加>=1个元素,返回数组新长度,

unshift()与其相反,向开头添加

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

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

11、以下代码的输出结果是

var f = function g() {
    return 23;
   };
typeof g();

正确答案: D 你的答案: A (错误)

A、"number"
B、"undefined"
C、"function"
D、Error

在 JS 里,声明函数只有 2 种方法:

第 1 种: function foo(){…} (函数声明)
第 2 种: var foo = function(){…} (等号后面必须是匿名函数,这句实质是函数表达式)

除此之外,类似于 var foo = function bar(){…} 这样的东西统一按 2 方法处理,即在函数外部无法通过 bar 访问到函数,因为这已经变成了一个表达式。

但为什么不是 “undefined”?
这里如果求 typeof g ,会返回 undefined,但求的是 g(),所以会去先去调用函数 g,这里就会直接抛出异常,所以是 Error。

12、关于JavaScript里的xml处理,以下说法正确的是 ()

正确答案: B C D 你的答案: B C D (正确)

A、Xml是种可扩展标记语言,格式更规范,是作为未来html的替代
B、Xml一般用于传输和存储数据,是对html的补充,两者的目的不同
C、在JavaScript里解析和处理xml数据时,因为浏览器的不同,其做法也不同
D、在IE浏览器里处理xml,首先需要创建ActiveXObject对象

解析: 1.什么是 XML?

XML 指可扩展标记语言(EXtensible Markup Language
XML 是一种标记语言,很类似 HTML
XML 的设计宗旨是传输数据,而非显示数据
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准


2.XML 与 HTML 的主要差异

XML 不是 HTML 的替代。

XML 和 HTML 为不同的目的而设计:

XML 被设计为传输和存储数据,其焦点是数据的内容。

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

13、下列不属于javascript中查找元素的方法的是()

正确答案: A 你的答案: D (错误)

getElementByClassName()
getElementsByTagName()
getElementById()
getElementsByName()

解释:选择A 错在Elements。因为这个方法可以返回一组节点。

  1. A. 获取所有指定类名的元素:getElementsByClassName
    var x = document.getElementsByClassName(“example”);

    • 定义和使用
      getElementsByClassName() 方法返回文档中所有指定类名的元素集合,作为 NodeList 对象。
      NodeList 对象代表一个有顺序的节点列表。NodeList 对象 我们可通过节点列表中的节点索引号来访问列表中的节点(索引号由0开始)。
    • 提示: 你可以使用 NodeList 对象的 length 属性来确定指定类名的元素个数,并循环各个元素来获取你需要的那个元素。
  2. B getElementsByTagName() 方法可返回带有指定标签名的对象的集合。

    • 语法
      document.getElementsByTagName(tagname)

    • 说明

      getElementsByTagName() 方法返回元素的顺序是它们在文档中的顺序。

      • 如果把特殊字符串 “*” 传递给 getElementsByTagName() 方法,它将返回文档中所有元素的列表,元素排列的顺序就是它们在文档中的顺序。
  3. C getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用。

    • 语法
      document.getElementById(id)
    • 说明
      HTML DOM 定义了多种查找元素的方法,除了 getElementById() 之外,还有 getElementsByName() 和 getElementsByTagName()。
    • 不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()。
    • 在操作文档的一个特定的元素时,最好给该元素一个 id 属性,为它指定一个(在文档中)唯一的名称,然后就可以用该 ID 查找想要的元素。
  4. D getElementsByName() 方法可返回带有指定名称的对象的集合。

    • 语法
      document.getElementsByName(name)
      该方法与 getElementById() 方法相似,但是它查询元素的 name 属性,而不是 id 属性。
    • 另外,因为一个文档中的 name 属性可能不唯一(如 HTML 表单中的单选按钮通常具有相同的 name 属性),所有 getElementsByName() 方法返回的是元素的数组,而不是一个元素。

14、下面有关JavaScript中 call和apply的描述,错误的是?

正确答案: B 你的答案: C (错误)

call与apply都属于Function.prototype的一个方法,所以每个function实例都有call、apply属性
两者传递的参数不同,call函数第一个参数都是要传入给当前对象的对象,apply不是
apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入
call传入的则是直接的参数列表。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。

1、相同
call()方法和apply()方法的作用相同,他们的区别在于接收参数的方式不同。对于call(),第一个参数是this值没有变化,变化的是其余参数都直接传递给函数。(在使用call()方法时,传递给函数的参数必须逐个列举出来。使用apply()时,传递给函数的是参数数组)如下代码做出解释:

function add(c, d){
return this.a + this.b + c + d;
}
var o = {a:1, b:3};
add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16
add.apply(o, [10, 20]); // 1 + 3 + 10 + 20 = 34

2、区别
接收参数的方式不同:
对于call(),第一个参数是运行函数的作用域,其余参数都直接传递给函数即传递给函数的参数必须逐个列举出来。
对于apply(),第一个参数是 运行函数的作用域 ,另一个参数是参数数组,可以是Array实例或arguments对象。

15、若需给子scope发送消息,需使用哪个方法

正确答案: B 你的答案: A (错误)

$emit()
$broadcast()
$on()
$send()

Angular 的知识,

  • 没 有 没有 send.
  • $emit只能向parent controller传递event与data
  • $broadcast只能向child controller传递event与data
  • $on用于接收event与data

16、下列说法正确的是()

正确答案: B C D 你的答案: A C (错误)

每个JS对象一定对应一个原型对象,并从原型对象继承属性和方法
对象的__proto__指向自己构造函数的prototype
Object.prototype. __proto__=== null,说明原型链到Object.prototype终止
表达式 Function.prototype.__proto__.__proto__ === null 的运行结果为true

A选项

如果是使用Object.create(null)创建的空对象,是没有对应原型对象的,所以这个答案不够严谨!

B选项

// 对于我来说答案改成这样会好理解点: 对象的_proto_指向构造自己的函数的prototype
function foo() {};
var a = new foo();
console.log(a.__proto__, foo.prototype);

C选项

Object已经没有对应的原型了,Object.prototype. proto=== null为前提,终结原型。

D选项

Function对应的原型是Object,而Object没有对应的原型了,所以为null

17、以下 javascript 代码,在浏览器中运行的结果是()

img

正确答案: B 你的答案: E (错误)

true
string
undefined
false
number

解析:|| 这个是 短路或,也就是||前面为true的话就直接等于前面的值了,不会再看||后面。

这里4399<0是false,所以还需要往后看,4399+’'是字符串类型,typeof返回的是值的类型

所以在控制台输出的是String

18、以下哪一项不属于浏览器Response Headers字段:

正确答案: A 你的答案: C (错误)

Referer
Connection
Content-Type D
Server

解析:

说一说常见的请求头和相应头都有什么呢?

1)请求(客户端->服务端[request])
GET(请求的方式) /newcoder/hello.html(请求的目标资源) HTTP/1.1(请求采用的协议和版本号)
Accept: /(客户端能接收的资源类型)
Accept-Language: en-us(客户端接收的语言类型)
Connection: Keep-Alive(维护客户端和服务端的连接关系)
Host: localhost:8080(连接的目标主机和端口号)
Referer: http://localhost/links.asp(告诉服务器我来自于哪里)
User-Agent: Mozilla/4.0(客户端版本号的名字)
Accept-Encoding: gzip, deflate(客户端能接收的压缩数据的类型)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(缓存时间)
Cookie(客户端暂存服务端的信息)

Date: Tue, 11 Jul 2000 18:23:51 GMT(客户端请求服务端的时间)

2)响应(服务端->客户端**[response])**
HTTP/1.1(响应采用的协议和版本号) 200(状态码) OK(描述信息)
Location: http://www.baidu.com(服务端需要客户端访问的页面路径)
Server:apache tomcat(服务端的Web服务端名)
Content-Encoding: gzip(服务端能够发送压缩编码类型)
Content-Length: 80(服务端发送的压缩数据的长度)
Content-Language: zh-cn(服务端发送的语言类型)
Content-Type: text/html; charset=GB2312(服务端发送的类型及采用的编码方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服务端对该资源最后修改的时间)
Refresh: 1;url=http://www.it315.org(服务端要求客户端1秒钟后,刷新,然后访问指定的页面路径)
Content-Disposition: attachment; filename=aaa.zip(服务端要求客户端以下载文件的方式打开该文件)
Transfer-Encoding: chunked(分块传递数据到客户端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服务端发送到客户端的暂存数据)
Expires: -1//3种(服务端禁止客户端缓存页面数据)
Cache-Control: no-***(服务端禁止客户端缓存页面数据)
Pragma: no-***(服务端禁止客户端缓存页面数据)
Connection: close(1.0)/(1.1)Keep-Alive(维护客户端和服务端的连接关系)

Date: Tue, 11 Jul 2000 18:23:51 GMT(服务端响应客户端的时间)

在服务器响应客户端的时候,带上Access-Control-Allow-Origin头信息,解决跨域的一种方法。

19、如何把 7.25 四舍五入为最接近的整数?

正确答案: D 你的答案: A (错误)

round(7.25)rnd(7.25)Math.rnd(7.25)Math.round(7.25)

◎Math.ceil()执行向上舍入,即它总是将数值向上舍入为最接近的整数;
◎Math.floor()执行向下舍入,即它总是将数值向下舍入为最接近的整数;
◎Math.round()执行标准舍入,即它总是将数值四舍五入为最接近的整数(这也是我们在数学课上学到的舍入规则)。

20、以下关于Histroy对象的属性或方法描述正确的是()

正确答案: A D 你的答案: A C (错误)

back回到浏览器载入历史URL地址列表的当前URL的前一个URLgo表示刷新当前页面length保存历史URL地址列表的长度信息forward转到浏览器载入历史URL地址列表的当前URL的下一个URL。

浏览器的内置对象管理模型,简称BOM(Browser Object Model)中的Histroy属性和方法。

  • length 返回浏览器历史列表中的URL数量。所以C中表述的长度信息是错误的。
  • back() 加载 history列表中的前一个URL
  • forward() 加载 history 列表中的下一个URL
  • go() 加载history列表中的某个具体页面所以B的表述刷新当前页面是错误的

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