JavaScript面试题整理

一、单选题

1、以下哪条语句会产生运行错误:(A

  • A.var obj = ( ); // 语法错误
  • B.var obj = [ ];//定义一个数组
  • C.var obj = { };//定义一个对象
  • D.var obj = / /;//定义一个正则表达式

2、以下哪个单词不属于javascript保留字:(B

  • A. with
  • B. parent
  • C. class
  • D. void

3、请选择结果为真的表达式:(C

  • A. null instanceof Object
  • B. null === undefined
  • C. null == undefined
  • D. NaN == NaN
说明
==用于一般比较,===用于严格比较,==在比较的时候可以转换数据类型,===严格比较,只要类型不匹配就返回false
举例说明:
"1"  ==  true
类型不同,"=="将先做类型转换,把true转换为1,即为 "1"  ==  1;
此时,类型仍不同,继续进行类型转换,把"1"转换为1,即为 1 == 1;
此时,"==" 左右两边的类型都为数值型,比较成功!
如果比较:"1"  ===  true 左侧为字符型,右侧为bool布尔型,左右两侧类型不同,结果为false;
如果比较:"1"  ===  1      左侧为字符型,右侧为int数值型,左右两侧类型不同,结果为false;
如果比较: 1   ===  1       左侧为int数值型,右侧为int数值型,左右两侧类型相同,数值大小也相同,结果为true;
简而言之就是 "==" 只要求值相等; "===" 要求值和类型都相等

二、不定项选择题

1、foo对象有att属性,那么获取att属性的值,以下哪些做法是可以的:(ACE)
A. foo.att
B. foo(“att”)
C. foo[“att”]
D. foo{“att”}
E. foo[“a”+”t”+”t”]

2、以下哪些是javascript的全局函数:(ABC)
A. escape
B. parseFloat
C. eval
D. setTimeout
E. alert

 说明:全局属性和函数可用于所有内建的 JavaScript 对象。

 顶层函数(全局函数)
 
FF: Firefox, IE: Internet Explorer

函数

描述

FF

IE

decodeURI()

解码某个编码的 URI。

1

5.5

decodeURIComponent()

解码一个编码的 URI 组件。

1

5.5

encodeURI()

把字符串编码为 URI。

1

5.5

encodeURIComponent()

把字符串编码为 URI 组件。

1

5.5

escape()

对字符串进行编码。

1

3

eval()

计算 JavaScript 字符串,并把它作为脚本代码来执行。

1

3

getClass()

返回一个 JavaObject 的 JavaClass。

 

 

isFinite()

检查某个值是否为有穷大的数。

1

4

isNaN()

检查某个值是否是数字。

1

3

Number()

把对象的值转换为数字。

1

 

parseFloat()

解析一个字符串并返回一个浮点数。

1

3

parseInt()

解析一个字符串并返回一个整数。

1

3

String()

把对象的值转换为字符串。

1

 

unescape()

对由 escape() 编码的字符串进行解码。

1

3

 顶层属性(全局属性)FF: Firefox, IE: Internet Explorer

 方法

 

描述

FF

IE

Infinity

代表正的无穷大的数值。

1

4

java

代表 java.* 包层级的一个 JavaPackage。

 

 

NaN

指示某个值是不是数字值。

1

4

Packages

根 JavaPackage 对象。

 

 

undefined

指示未定义的值。

1

5.5

3、关于IFrame表述正确的有:(ABCD)
A. 通过IFrame,网页可以嵌入其他网页内容,并可以动态更改
B. 在相同域名下,内嵌的IFrame可以获取外层网页的对象
C. 在相同域名下,外层网页脚本可以获取IFrame网页内的对象
D. 可以通过脚本调整IFrame的大小

 三、问答题:

1、谈谈javascript数组排序方法sort()的使用,重点介绍sort()参数的使用及其内部机制

sort的实现的功能类似JAVA的比较器,数据排序从多维数组的第一维开始排序
可以自己定义排序方法,很不多的函数

 2、简述DIV元素和SPAN元素的区别。

DIV有回车,SPAN没有

DIV是块元素,SPAN是内嵌元素。块元素相当于内嵌元素在前后各加一个<br>换行。其实,块元素和行内元素也不是一成不变的,只要给块元素定义display:inline,块元素就成了内嵌元素,同样地,给内嵌元素定义了display:block就成了块元素了。

DIV(division)是一个块级元素,可以包含段落、标题、表格,乃至诸如章节、摘要和备注等。而SPAN 是行内元素,SPAN 的前后是不会换行的,它没有结构的意义,纯粹是应用样式,当其他行内元素都不合适时,可以使用SPAN。

3、结合text这段结构,谈谈innerHTML outerHTML innerText之间的区别。

innerHTML对象里面的HTML,outerHTML包括对象和里面的

innerText对象里面的文本

4、说几条XHTML规范的内容(至少3条)

属性加引号,不能有不匹配的标签,加定义

5、对Web标准化(或网站重构)知道哪些相关的知识,简述几条你知道的Web标准?

网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的网站标准也分三方面:结构化标准语言,主要包括XHTML和XML;表现标准语言主要包括CSS;行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。

6、var a = 10; var b = 20; var c = 10; alert(a = b); alert(a == b); alert(a == c);结果是?

结果:20,true.false;

7、form中的input有哪些类型?各是做什么处理使用的?

text radio checkbox file button image submit reset hidden
submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了。
如果表单在点击提交按钮后需要用JS进行处理(包括输入验证)后再提交的话,通常都必须把submit改成button, 即取消其自动提交的行为,否则,将会造成提交两次的效果,对于动态网页来说,也就是对数据库操作两次。

button具有name、value属性,能触发onclick事件

submit继承了button

submit增加了触发表单onsubmit事件的功能、增加了执行表单的submit()方法的功能

 INPUT type=submit按回车提交表单

 button提交的是innerTEXT

 8、table标签中border,cellpadding td标签中colspan,rowspan分别起什么作用?

border边界
cellpadding,是补白,是指单元格内文字与边框的距离
cellspacing,两个单元格之间的距离
colspan跨列数
rowspan跨行数

 9、form中的input可以设置readonly和disable,请问这两项属性有什么区别?

readonly不可编辑,但可以选择和复制
disable不能编辑复制选择

10、JS中的三种弹出式消息提醒(警告窗口、确认窗口、信息输入窗口)的命令是什么?

alert
confirm
prompt

11.求y和z的值是多少?

<script type="text/javascript">
var x = 1;
var y = 0;
var z = 0;
function add(n){n=n+1;}
y = add(x);
function add(n){n=n+3;}
z = add(x);
</script>
都为undefined,因为没有返回值。

12.javascript是面向对象的,怎么体现javascript的继承关系?

使用prototype来实现。

13.javascript怎样选中一个checkbox,怎样设置它无效?

document.all.cb1[0].disabled = true;

14.javaScript的2种变量范围有什么不同?

全局变量:当前页面内有效

局部变量:方法内有效

15.列举javaScript的3种主要数据类型,2种复合数据类型和2种特殊数据类型。

主要数据类型:string, boolean, number

复合数据类型:function, object

16.程序中捕获异常的方法?

window.error

try{}catch(){}finally{}

17.写出函数DateDemo的返回结果,系统时间假定为今天

function DateDemo(){

  var d, s="今天日期是:";

  d = new Date();

  s += d.getMonth() + "/";

  s += d.getDate() + "/";

  s += d.getYear();

  return s;

}

结果:今天日期是:7/17/2010

18.写出程序运行的结果?

for(i=0, j=0; i<10, j<6; i++, j++){

  k = i + j;

}

结果:10(小心陷阱)

 19.运行的结果?

function hi(){
var a;
alert(a);
}

结果:undefined

20.运行的结果?

function hi(){
var a = null;
alert(a);
}

结果:null

14.浏览器的对象模型?

window

顶级对象

window.alert(msg)

window.prompt()

window.confirm()

if(window.confirm()){

...

}

window.open()

window.close()

document

document.write()

history

当用户浏览网页时,浏览器保存了一个最近所访问网页的url列表。这个列表就是用history对象表示。

history.back():后退

history.forward():前进

history.go(n):正数表示向前,负数表示向后

location

表示当前打开的窗口或框架的URL信息。

location.href:重定向

等价于location.assign(url)

location.host:类似www.163.com:80

navigator

表示浏览器的信息及js运行的环境

navigator.cookieEnabled:该属性表示是否启用cookie

screen

用于显示网页的显示器的大小和颜色

screen.width/screen.height:表示显示器的分辨率(总的宽度,高度)

21XMLHTTPRequest对象是什么?
Ajax原理

22.超链接的属性target的可选值:_blank, _parent, _self, _top和框架名称有什么区别?

23.javascript的常用对象有哪些?

String, Math, Date和Array对象

 四、编程题:

1、完成foo()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框。

 <html> <head> <script> function foo() { // 在此处添加代码 var rg = document.getElementsByName("radioGroup"); for( var i = 0; i < rg.length; i++ ) { if( rg[i].checked ) { alert("你选择了第" + (i+1) + "个单选框"); } } return false; } </script> </head> <body> <form name="form1" onsubmit="foo();"> <input type="radio" name="radioGroup" /> <input type="radio" name="radioGroup" /> <input type="radio" name="radioGroup" /> <input type="radio" name="radioGroup" /> <input type="radio" name="radioGroup" /> <input type="radio" name="radioGroup" /> <input type="submit" /> </form> </body> </html>

 2、填充注释部分的函数体,使得foo()函数调用弹出”成功”的对话框。代码应尽量简短。

function reverse(str) {
// 在此处加入代码,完成字符串翻转功能
return str.split(",").reverse().join(",");
}

    <html>   
        <head>   
            <script>   
                function foo()   
                {   
                    var str = reverse('a,b,c,d,e,f,g');   
                    alert(str);   
                    if (str == 'g,f,e,d,c,b,a')   
                        alert('成功');   
                    else alert('失败');   
                }   
                function reverse(str)   
                {   
                    // 在此处加入代码,完成字符串翻转功能   
                    var spl = str.split(',');   
                    var newstr="";   
                    for(i=spl.length-1;i>=0;i--)   
                    {   
                        newstr+=spl[i]+',';   
                    }   
                    newstrnewstr=newstr.substring(0,newstr.length-1)   
                    return newstr;   
                }   
            </script>   
        </head>   
        <body>   
            <input type="button" value="str" onclick="foo()" />   
        </body>   
    </html>  
原文地址:https://www.cnblogs.com/JoannaQ/p/2976752.html