JavaScript面试78题
- 127 次检阅

第1题,什么是JavaScript?

JavaScript是一门编程语言,既可以在客户端用,又可以在服务器端使用。它是一门基于对象的编程语言。

第2题,列举一下Java和JavaScript的不同。

Java是面向对象的编程语言,定义各方面都非常的严格和完整。

JavaScript是基于对象的编程语言。在使用的过程中,它的风格相对比较开放,自由度很高。

第3题,在JavaScript中的数据类型有哪些?

Number, String, Bollean, Object, Undefined.

第4题,isNaN函数的作用是什么?

如果输入值不是一个数字的话,这个函数会返回真,否则的话返回false。

第5题,JavaScript和ASP script,哪一个更快一些?

JavaScript更快一些。因为JavaScript直接可以在客户端运行不需要依赖于网络服务器端。ASP script需要借助服务器端才能够运行,所以要比JavaScript要慢一些。

当然,现在JavaScript也可以用于开发服务器端的代码了。

第6题,什么是negative infinity?

Negative infinity是用一个负数除以0得出的数字。

第7题,有没有可能把JavaScript的一行代码分成几行?

可以, 虽然不建议这么做,但是可以。

第8题,JavaScript是哪家公司开发的?

Netscape.

第9题,什么是undeclared和undefined变量?

undeclared变量是指在程序中不存在,没有被声明过的,如果程序试图访问这样的变量,应该会返回run time error.

Undefined变量是那些没有赋值的变量。把程序读取这些变量的值的时候,读到的值就是undefined。

第10题, 如何动态的添加html的元素?

一些方法可以使用,比如create element, create text node, append child等等。

第11题,什么是全局变量?这些变量是如何定义的,程序应该如何用他们?

全局变量是在程序运行整个过程中可以被访问量的变量,他们没有scope, var关键字是用来define一个局部或者全局变量或者对象的。

全局变量的最大问题就是它会跟局部变量的名字发生冲突,代码中如果依赖于大量的全局变量非常不容易debug。

第12题,什么是prompt box?

Prompt box就是一个对话框,用户可以提供自己的输入。

第13题,this关键字是什么?

这一次关键字表示的是一个对象, 这个对象对应着被调用的地方。

第14题,解释一下timers. 用timers有什么坏处吗?

JavaScript中有如下timer函数: setTimeOut, setInterval, clearInterval.

Set time out会在一个时间延迟以后调用一个函数。

setInterval会在一个时间延迟以后重复的调用一个函数。Clear interval是用来终止这个过程。

这些timers也是运行在一个单线程中,因此事件可能会排队等待被处理。

第15题, 哪些符号可以在JavaScript中用来做注释?

//

/* */

第16题,view state和session state的区别是什么?

view state 指的是在session中的一个页面。

Session state,指的是用户特定的数据, 这些数据可以用于访问所有的页面。

第17题,什么是三个等号操作符?

三个等号操作符只有当两边的值相等并且类型相等才会返回真。

第18题,解释一下你如何用JavaScript提交一个form?

submit方法。

第19题,JavaScript支持自动类型转换吗?

是的,JavaScript支持自动类型转换。

第20题, 如何用JavaScript来改变一个元素的style/class?

.style.fontSize="20px"

.className="any class name"

第21题, 解释一下如何读写一个文件。

两种方法,一个是用JavaScript扩展, 一个是使用一个网页和activeX 对象。

第22题, 如何在JavaScript中使用循环?

For

While

do while

第23题, 什么是called variable typing?

在JavaScript中,一个变量可以赋值为数字,同时这个变量还可以赋值为一个字符串,这就叫called variable typing。

第24题, 如何把字符串转换成不同进制的整数?

使用parseInt函数。

parseInt("4f", 16)

第25题, 两个等号和三个等号的区别是什么?

两个等号只检查值是否相等。三个等号即既检查值是否相等,也检查类型是否相等。

第26题,1+2+"5"的结果是什么?

35

两个数字先相加得三, 数字跟后面的字符串相加都变成字符串,所以得出有35。

第27题, 如何在客户端检查操作系统?

navigator.platform

第28题, null 是什么?

Null是一个对象,它标识的是没有值的空对象。

第29题,Delete操作符的作用是什么?

Delete用来删除属性及其值。

delete student.age

第30题, undefined指的是什么值?

这个变量不存在。

这个变量未赋值。

这个属性不存在。

第31题,在JavaScript中有几种类型的弹出框?

alert

confirm

prompt

第32题, void(0)的作用是什么?

void(0)是为了防止页面刷新,0是调用以后的传送值。

是用来调用另一个方法,而不需要刷新页面。

第33题,在javascript中如何在一个页面中加载另一个页面?

<script language="Javascript" type="text/javascript">

<!-- location.href="newhost/newpath/newfile"; // --></script>

第34题, JavaScript中变量的数据类型是什么?

所有的变量都是对象数据类型。

第35题, Alert跟confirmation的区别是什么?

Alert只有一个按钮,就是OK。

Confirmation有两个按钮,一个是OK,一个是cancel。

第36题,什么是escape字符?

在显示单引号, 双引号, 撇号,地址号时需要escape:\。

第37题,什么是JavaScript的cookies?

Cookies是用来在电脑上存储用户少量的信息的。比如购物信息,用户名的信息。

第38题,解释一下pop方法。

这个是数组中的一个方法。pop跟shift很相似,但是shift方法会从数组的开头取值,而pop是从数组的尾部取值。

Pop从数组取值以后会把尾部的值删掉,因此数组会被改变。

array.pop()

第39题, JavaScript是否有concept level scope?

没有。JavaScript没有concept level of scope,在函数中定义的变量,有函数内的scope。

第40题, 在JavaScript中使用inner html的缺点有哪些?

缺点有:

内容随时随处会被改变。

我们不能使用像append to inner html的方法。

即使我们使用plus equal, innerHtml+=, 原先的内容也会被替换掉。

整个inner html的内容会被重新解析,然后再添加到元素当中,因此非常慢。

Inner html的添加过程没有验证,因此我们有可能添加一些无效的内容,从而导致整个文档崩溃。

第41题, 什么是break 和 continue?

Break是为了中断当前的循环,continue会中断当前的操作但会继续当前的循环。

第42题,在JavaScript中有哪两类基本的数据类型?

一种是原始数据类型,一种是引用数据类型。

数据类型包含像数字,布尔类型。引用数据类型比较复杂一些,像字符串,日期。

第43题,通用对象是如何创建的?

var obj=new object();

第44题, Type of操作符是干什么用的?

Typeof操作符是返回一个变量的类型, 是用字符串来表述的。

第45题, 哪些关键字用来处理异常?

Try catch finally.

第46题,哪个关键字用来在屏幕上打印文字?

document.write()

第47题,blur函数的作用是什么?

blur函数是用来去除某个指定对象的焦点。

第48题, 什么是variable typing?

这个问题上面提到过一次了,就是把一个数字赋给一个变量,然后又把字符串赋给相同的这个变量。

第49题, 如何在客户端找到操作系统的名字?

Navigator.appversion.

第50题, 在JavaScript中有多少种错误类型?

Load time errors.

Run time errors,

logical errors.

第51题,push method的用处是什么?

这个方法是用来向一个数组尾部添加一个和多个元素的。

第52题, unshift method是干什么的?

umshift跟push method类似,只不过它是在数组的前面添加元素。

第53题, JavaScript和JScript的区别是什么?

他们非常接近,只是JavaScript是netscape开发的,JScript是Microsoft开发的。

第54题, 对象的属性是如何分配的?

obj.prop=12

或者

obj["prop"]=12

第55题,什么是strict mode?怎么激活它?

Strict mode可以使JavaScript代码更整洁更安全,它会实时的显示代码中的错误。

启动strict mode,调用下面的语句

"use strict";

第56题, 如何获取checkbox的状态?

document.getElementById("id").checked

第57题,解释一下window.onload和ondocumentready.

onload在所有的配置信息加载完成以后才会调用。

Ondocumentready, 会在dom加载完成以后启动。

它比onload要早一些被调用。

第58题, 解释一下JavaScript中的closures, 它们应该何时被使用?

Closure是一个局部的声明变量,跟一个函数相关, 在函数返回时,会存在内存里面。

第59题, 给出一种方法,在数组的尾部添加元素。

arr[arr.length]=value

第60题, 解释一下for-in循环。

这个循环是用来遍历一个对象的所有属性。

第61题, 解释一下匿名函数。

匿名函数是被定义的时候没有指定名字的函数。

第62题, Call和apply的区别是什么?

Call和apply非常相近,只有一点不同。当函数的调用参数可知的时候, Call可以被使用。当函数的调用参数不可知时,apply应该被用到。

第63题, 什么是event bubbling?

JavaScript允许dom元素嵌套使用。在这种情况下,如果一个子元素被点击了,那么它的父元素也会同样的被点击。

第64题,JavaScript大小写敏感吗?

是的。是大小写敏感的。

第65题,有哪些boolean操作符?

and, or, not

第66题, 在超级链接的时候,能不能指定一个特定的frame?

可以通过target属性设定这个frame的名字。

第67题, Web garden和web farm的区别是什么?

Web garden和web farm都是网络hosting系统。它们的区别是Web garden在一台服务器上。I verb form, 是更大的配置,常常用在多于一台服务器的时候。

第68题, JavaScript中如何操作dom?

通过dom API.

第69题,Event handler如何使用?

event handler用于设定一个函数属性来对应一个事件的发生。

第70题, 解释一下deferred脚本的作用是什么。

Deferred脚本会推迟运行从而加快页面加载的时间。

第71题, 有哪些不同的functional组件?

First class functions. 这些函数可以作为参数传入另一个函数当中。可以作为函数的返回值返回,也可以存放在数据结构当中。

Nested functions. 这种函数是嵌套的另一个函数里面,每次它们被调用,它们的主函数也会比较有。

第72题, 什么是屏幕对象?

屏幕对象是读取客户端屏幕信息的对象。

这些信息包含availHeight, availWidth, ColorDepth, Height, Width。

第73题, 解释一下unescape和escape函数。

escape函数是用来对一些字符串进行编码,以便于从一个计算机传到另一台计算机上。

unescape函数是为了把上述的编码后的字符串,转化成可以阅读的字符串。

第74题, 什么是decodeURI和encodeURI?

encodeURI是把url转化成hex编码。

decodeURI是把hex编码转回成url。

第75题, 下面这个语句是干什么用的?

var arr=[[[]]]

它定义了一个三维数组。

第76题, JavaScript跟ecma script有什么关联?

ecma script是标准, 是JavaScript开发的依据。

JavaScript是面向网络开发的脚本语言。

第77题, 什么是JavaScript的命名空间,如何使用?

命名空间是用来分组管理函数变量等等,有一个独有的名字。在这个名字下面啊,附属着一系列的函数,对象,属性等等。这些大大改善了代码的模块化,增强了代码的重用性。

第78题, 当不支持JavaScript的时候,在老的浏览器中如何隐藏JavaScript?

在script 标记之后添加"<!--"。

在script标记之前添加"//-->"。

这样在老的浏览器中,会把这部分代码当做很长的html的注释。

在现代浏览器中会把<!--和//→当成一行注释。

转载:https://zhuanlan.zhihu.com/p/81902166


分享到:

这篇文章还没有评论

发表评论