基础JavaScript面试问题及答案

基础JavaScript面试问题及答案
基础JavaScript面试问题及答案

基础JavaScript面试问题及答案

1.使用typeof bar === "object"来确定bar是否是对象的潜在陷阱是什么?如何避免这个陷阱?

尽管typeof bar === "object"是检查bar是否对象的可靠方法,令人惊讶的是在JavaScript 中null也被认为是对象!

因此,令大多数开发人员惊讶的是,下面的代码将输出true (而不是false) 到控制台:

var bar = null;console.log(typeof bar === "object"); // logs true!

只要清楚这一点,同时检查bar是否为null,就可以很容易地避免问题:

console.log((bar !== null) && (typeof bar === "object")); // logs false

要答全问题,还有其他两件事情值得注意:

首先,上述解决方案将返回false,当bar是一个函数的时候。在大多数情况下,这是期望行为,但当你也想对函数返回true的话,你可以修改上面的解决方案为:

console.log((bar !== null) && ((typeof bar === "object") || (typeof bar === "function")));

第二,上述解决方案将返回true,当bar是一个数组(例如,当var bar = [];)的时候。在大多数情况下,这是期望行为,因为数组是真正的对象,但当你也想对数组返回false时,你可以修改上面的解决方案为:

console.log((bar !== null) && (typeof bar === "object") && (toString.call(ba r) !== "[object Array]"));

或者,如果你使用jQuery的话:

console.log((bar !== null) && (typeof bar === "object") && (! $.isArray(ba r)));

2.下面的代码将输出什么到控制台,为什么?

(function(){

var a = b = 3;

})();

console.log("a defined? " + (typeof a !== 'undefined'));console.log("b defin ed? " + (typeof b !== 'undefined'));

由于a和b都定义在函数的封闭范围内,并且都始于var关键字,大多数JavaScript开发人员期望typeof a和typeof b在上面的例子中都是undefined。

然而,事实并非如此。这里的问题是,大多数开发人员将语句var a = b = 3;错误地理解为是以下声明的简写:

var b = 3;var a = b;

但事实上,var a = b = 3;实际是以下声明的简写:

b = 3;var a = b;

因此(如果你不使用严格模式的话),该代码段的输出是:

a defined? false

b defined? true

但是,b如何才能被定义在封闭函数的范围之外呢?是的,既然语句var a = b = 3;是语句b = 3;和var a = b;的简写,b最终成为了一个全局变量(因为它没有前缀var关键字),因此仍然在范围内甚至封闭函数之外。

需要注意的是,在严格模式下(即使用use strict),语句var a = b = 3;将生成ReferenceError: b is not defined的运行时错误,从而避免任何否则可能会导致的headfakes /bug。(还是你为什么应该理所当然地在代码中使用use strict的最好例子!)

3.下面的代码将输出什么到控制台,为什么?

var myObject = {

foo: "bar",

func: function() {

var self = this;

console.log("outer func: this.foo = " + this.foo);

console.log("outer func: self.foo = " + self.foo);

(function() {

console.log("inner func: this.foo = " + this.foo);

console.log("inner func: self.foo = " + self.foo); }());

}

};

myObject.func();

上面的代码将输出以下内容到控制台:

outer func: this.foo = bar

outer func: self.foo = bar

inner func: this.foo = undefined

inner func: self.foo = bar

在外部函数中,this和self两者都指向了myObject,因此两者都可以正确地引用和访问foo。在内部函数中,this不再指向myObject。其结果是,this.foo没有在内部函数中被定义,相反,指向到本地的变量self保持在范围内,并且可以访问。(在ECMA 5之前,在内部函数中的this将指向全局的window对象;反之,因为作为ECMA 5,内部函数中的功能this是未定义的。)

4.封装JavaScript源文件的全部内容到一个函数块有什么意义及理由?

这是一个越来越普遍的做法,被许多流行的JavaScript库(jQuery,Node.js等)采用。这种技术创建了一个围绕文件全部内容的闭包,也许是最重要的是,创建了一个私有的命名空间,从而有助于避免不同JavaScript模块和库之间潜在的名称冲突。

这种技术的另一个特点是,允许一个易于引用的(假设更短的)别名用于全局变量。这通常用于,例如,jQuery插件中。jQuery允许你使用jQuery.noConflict(),来禁用$引用到jQuery命名空间。在完成这项工作之后,你的代码仍然可以使用$利用这种闭包技术,如下所示:

(function($) { /* jQuery plugin code referencing $ */ } )(jQuery);

5.在JavaScript源文件的开头包含use strict有什么意义和好处?

对于这个问题,既简要又最重要的答案是,use strict是一种在JavaScript代码运行时自动实行更严格解析和错误处理的方法。那些被忽略或默默失败了的代码错误,会产生错误或抛出异常。通常而言,这是一个很好的做法。

严格模式的一些主要优点包括:

?使调试更加容易。那些被忽略或默默失败了的代码错误,会产生错误或抛出异常,因此尽早提醒你代码中的问题,你才能更快地指引到它们的源代码。

?防止意外的全局变量。如果没有严格模式,将值分配给一个未声明的变量会自动创建该名称的全局变量。这是JavaScript中最常见的错误之一。在严格模式下,这样做的话会抛出错误。

?消除this强制。如果没有严格模式,引用null或未定义的值到this值会自动强制到全局变量。这可能会导致许多令人头痛的问题和让人恨不得拔自己头发的bug。在严格模式下,引用null或未定义的this值会抛出错误。

?不允许重复的属性名称或参数值。当检测到对象(例如,var object = {foo: "bar", foo: "baz"};)中重复命名的属性,或检测到函数中(例如,function foo(val1, val2, val1){})重复命名的参数时,严格模式会抛出错误,因此捕捉几乎可以肯定是代码中的bug可以避免浪费大量的跟踪时间。

?使eval()更安全。在严格模式和非严格模式下,eval()的行为方式有所不同。最显而易见的是,在严格模式下,变量和声明在eval()语句内部的函数不会在包含范围内创建(它们会在非严格模式下的包含范围中被创建,这也是一个常见的问题源)。

?在delete使用无效时抛出错误。delete操作符(用于从对象中删除属性)不能用在对象不可配置的属性上。当试图删除一个不可配置的属性时,非严格代码将默默地失败,而严格模式将在这样的情况下抛出异常。

6.考虑以下两个函数。它们会返回相同的东西吗?为什么相同或为什么不相同?

function foo1(){

return {

bar: "hello"

};

}

function foo2(){

return

{

bar: "hello"

};

}

出人意料的是,这两个函数返回的内容并不相同。更确切地说是:

console.log("foo1 returns:");console.log(foo1());console.log("foo2 returns: ");console.log(foo2());

将产生:

foo1returns:Object {bar: "hello"}foo2returns:undefined

这不仅是令人惊讶,而且特别让人困惑的是,foo2()返回undefined却没有任何错误抛出。

原因与这样一个事实有关,即分号在JavaScript中是一个可选项(尽管省略它们通常是非常糟糕的形式)。其结果就是,当碰到foo2()中包含return语句的代码行(代码行上没有其他任何代码),分号会立即自动插入到返回语句之后。

也不会抛出错误,因为代码的其余部分是完全有效的,即使它没有得到调用或做任何事情(相当于它就是是一个未使用的代码块,定义了等同于字符串"hello"的属性bar)。

这种行为也支持放置左括号于JavaScript代码行的末尾,而不是新代码行开头的约定。正如这里所示,这不仅仅只是JavaScript中的一个风格偏好。

7. NaN是什么?它的类型是什么?你如何可靠地测试一个值是否等于NaN?NaN属性代表一个“不是数字”的值。这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字(例如,"abc" / 4),要么是因为运算的结果非数字(例如,除数为零)。

虽然这看上去很简单,但NaN有一些令人惊讶的特点,如果你不知道它们的话,可能会导致令人头痛的bug。

首先,虽然NaN意味着“不是数字”,但是它的类型,不管你信不信,是Number:

console.log(typeof NaN === "number"); // logs "true"

此外,NaN和任何东西比较——甚至是它自己本身!——结果是false:

console.log(NaN === NaN); // logs "false"

一种半可靠的方法来测试一个数字是否等于NaN,是使用内置函数isNaN(),但即使使

用isNaN()依然并非是一个完美的解决方案。

一个更好的解决办法是使用value !== value,如果值等于NaN,只会产生true。另外,ES6提供了一个新的Number.isNaN()函数,这是一个不同的函数,并且比老的全局isNaN()函数更可靠。

8.下列代码将输出什么?并解释原因。

console.log(0.1 + 0.2);console.log(0.1 + 0.2 == 0.3);

一个稍微有点编程基础的回答是:“你不能确定。可能会输出“0.3”和“true”,也可能不会。JavaScript中的数字和浮点精度的处理相同,因此,可能不会总是产生预期的结果。“

以上所提供的例子就是一个演示了这个问题的典型例子。但出人意料的是,它会输出:

9.讨论写函数isInteger(x)的可能方法,用于确定x是否是整数。

这可能听起来是小菜一碟,但事实上,这很琐碎,因为ECMAScript 6引入了一个新的正以此为目的Number.isInteger()函数。然而,之前的ECMAScript 6,会更复杂一点,因为没有提供类似的Number.isInteger()方法。

问题是,在ECMAScript规格说明中,整数只概念上存在:即,数字值总是存储为浮点值。

考虑到这一点,最简单又最干净的ECMAScript6之前的解决方法(同时也非常稳健地返

回false,即使一个非数字的值,如字符串或null,被传递给函数)如下:

function isInteger(x) { return (x^0) === x; }

下面的解决方法也是可行的,虽然不如上面那个方法优雅:

function isInteger(x) { return Math.round(x) === x; }

请注意Math.ceil()和Math.floor()在上面的实现中等同于Math.round()。

或:

function isInteger(x) { return (typeof x === 'number') && (x % 1 === 0);

相当普遍的一个不正确的解决方案是:

function isInteger(x) { return parseInt(x, 10) === x; }

虽然这个以parseInt函数为基础的方法在x取许多值时都能工作良好,但一旦x取值相当大的时候,就会无法正常工作。问题在于parseInt()在解析数字之前强制其第一个参数到字符串。因此,一旦数目变得足够大,它的字符串就会表达为指数形式(例如,1e+21)。因此,parseInt()函数就会去解析1e+21,但当到达e字符串的时候,就会停止解析,因此只会返回值1。注意:

> String(1000000000000000000000)'1e+21'

> parseInt(1000000000000000000000, 10)1

> parseInt(1000000000000000000000, 10) === 1000000000000000000000false

10.下列代码行1-4如何排序,使之能够在执行代码时输出到控制台?为什么?

(function() {

console.log(1);

setTimeout(function(){console.log(2)}, 1000);

setTimeout(function(){console.log(3)}, 0);

console.log(4);

})();

序号如下:

1

4

3

2

让我们先来解释比较明显而易见的那部分:

1和4之所以放在前面,是因为它们是通过简单调用console.log()而没有任何延迟输出的

2之所以放在3的后面,是因为2是延迟了1000毫秒(即,1秒)之后输出的,而3是延迟了0毫秒之后输出的。

好的。但是,既然3是0毫秒延迟之后输出的,那么是否意味着它是立即输出的呢?如果是的话,那么它是不是应该在4之前输出,既然4是在第二行输出的?

要回答这个问题,你需要正确理解JavaScript的事件和时间设置。

浏览器有一个事件循环,会检查事件队列和处理未完成的事件。例如,如果时间发生在后台(例如,脚本的onload事件)时,浏览器正忙(例如,处理一个onclick),那么事件会添加到队列中。当onclick处理程序完成后,检查队列,然后处理该事件(例如,执行onload脚本)。

同样的,setTimeout()也会把其引用的函数的执行放到事件队列中,如果浏览器正忙的话。

当setTimeout()的第二个参数为0的时候,它的意思是“尽快”执行指定的函数。具体而言,函数的执行会放置在事件队列的下一个计时器开始。但是请注意,这不是立即执行:函数不会被执行除非下一个计时器开始。这就是为什么在上述的例子中,调用console.log(4)发生在调

用console.log(3)之前(因为调用console.log(3)是通过setTimeout被调用的,因此会稍微延迟)。

11.写一个简单的函数(少于80个字符),要求返回一个布尔值指明字符串是否为回文结构。

下面这个函数在str是回文结构的时候返回true,否则,返回false。

function isPalindrome(str) {

str = str.replace(/\W/g, '').toLowerCase();

return (str == str.split('').reverse().join(''));

}

例如:

console.log(isPalindrome("level")); // logs 'true'console.l og(isPalindrome("levels")); // logs 'false'console.log(isPal indrome("A car, a man, a maraca")); // logs 'true'

12.写一个sum方法,在使用下面任一语法调用时,都可以正常工作。

console.log(sum(2,3)); // Outputs 5console.log(sum(2)(3)); // Outputs 5(至少)有两种方法可以做到:

方法1

function sum(x) {

if (arguments.length == 2) {

return arguments[0] + arguments[1];

} else {

return function(y) { return x + y; };

}

}

在JavaScript中,函数可以提供到arguments对象的访问,arguments对象提供传递到函数的实际参数的访问。这使我们能够使用length属性来确定在运行时传递给函数的参数数量。

如果传递两个参数,那么只需加在一起,并返回。

否则,我们假设它被以sum(2)(3)这样的形式调用,所以我们返回一个匿名函数,这个匿名函数合并了传递到sum()的参数和传递给匿名函数的参数。

方法2

function sum(x, y) {

if (y !== undefined) {

return x + y;

} else {

return function(y) { return x + y; };

}

}

当调用一个函数的时候,JavaScript不要求参数的数目匹配函数定义中的参数数量。如果传递的参数数量大于函数定义中参数数量,那么多余参数将简单地被忽略。另一方面,如果传递的参数数量小于函数定义中的参数数量,那么缺少的参数在函数中被引用时将会给一个undefined值。

所以,在上面的例子中,简单地检查第2个参数是否未定义,就可以相应地确定函数被调用以及进行的方式。

13.请看下面的代码片段:

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

var btn = document.createElement('button');

btn.appendChild(document.createTextNode('Button ' + i));

btn.addEventListener('click', function(){ console.log(i); });

document.body.appendChild(btn);

}

(a)当用户点击“Button 4”的时候会输出什么到控制台,为什么?(b)提供一个或多个备用的可按预期工作的实现方案。

(a)无论用户点击什么按钮,数字5将总会输出到控制台。这是因为,当onclick方法被调用(对于任何按钮)的时候,for循环已经结束,变量i已经获得了5的值。(面试者如果能够谈一谈有关如何执行上下文,可变对象,激活对象和内部“范围”属性贡有助于闭包行为,则可以加分)。

(b)要让代码工作的关键是,通过传递到一个新创建的函数对象,在每次传递通过for循环时,捕捉到i值。下面是三种可能实现的方法:

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

var btn = document.createElement('button');

btn.appendChild(document.createTextNode('Button ' + i));

btn.addEventListener('click', (function(i) {

return function() { console.log(i); };

})(i));

document.body.appendChild(btn);

}

或者,你可以封装全部调用到在新匿名函数中的btn.addEventListener:

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

var btn = document.createElement('button');

btn.appendChild(document.createTextNode('Button ' + i));

(function (i) {

btn.addEventListener('click', function() { console.log(i); }); })(i);

document.body.appendChild(btn);

}

也可以调用数组对象的本地forEach方法来替代for循环:

['a', 'b', 'c', 'd', 'e'].forEach(function (value, i) {

var btn = document.createElement('button');

btn.appendChild(document.createTextNode('Button ' + i));

btn.addEventListener('click', function() { console.log(i); });

document.body.appendChild(btn);

});

14.下面的代码将输出什么到控制台,为什么?

var arr1 = "john".split('');var arr2 = arr1.reverse();var arr3 = "jones".sp lit('');

arr2.push(arr3);console.log("array 1: length=" + arr1.length + " last=" + arr 1.slice(-1));console.log("array 2: length=" + arr2.length + " last=" + arr2. slice(-1));

输出结果是:

arr1和arr2在上述代码执行之后,两者相同了,原因是:

?调用数组对象的reverse()方法并不只返回反顺序的阵列,它也反转了数组本身的顺序(即,在这种情况下,指的是arr1)。

?reverse()方法返回一个到数组本身的引用(在这种情况下即,arr1)。其结果为,arr2仅仅是一个到arr1的引用(而不是副本)。因此,当对arr2做了任何事情(即当我们调

用arr2.push(arr3);)时,arr1也会受到影响,因为arr1和arr2引用的是同一个对象。这里有几个侧面点有时候会让你在回答这个问题时,阴沟里翻船:

传递数组到另一个数组的push()方法会让整个数组作为单个元素映射到数组的末端。其结果是,语句arr2.push(arr3);在其整体中添加arr3作为一个单一的元素到arr2的末端(也就是说,它并没有连接两个数组,连接数组是concat()方法的目的)。

和Python一样,JavaScript标榜数组方法调用中的负数下标,例如slice()可作为引用数组末尾元素的方法:例如,-1下标表示数组中的最后一个元素,等等。

15.下面的代码将输出什么到控制台,为什么?

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

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

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

上面的代码将输出以下内容到控制台:

原因是…

这里的根本问题是,JavaScript(ECMAScript)是一种弱类型语言,它可对值进行自动类型转换,以适应正在执行的操作。让我们通过上面的例子来说明这是如何做到的。

例1:1 + "2" + "2"输出:"122"说明:1 + "2"是执行的第一个操作。由于其中一个运算对象("2")是字符串,JavaScript会假设它需要执行字符串连接,因此,会将1的类型转换为"1",1 + "2"结果就是"12"。然后,"12" + "2"就是"122"。

例2:1 + +"2" + "2"输出:"32"说明:根据运算的顺序,要执行的第一个运算是+"2"(第一个"2"前面的额外+被视为一元运算符)。因此,JavaScript将"2"的类型转换为数字,然后应用一元+号(即,将其视为一个正数)。其结果是,接下来的运算就是1 + 2,这当然是3。然后我们需要在一个数字和一个字符串之间进行运算(即,3和"2"),同样的,JavaScript会将数值类型转换为字符串,并执行字符串的连接,产生"32"。

例3:1 + -"1" + "2"输出:"02"说明:这里的解释和前一个例子相同,除了此处的一元运算符是-而不是+。先是"1"变为1,然后当应用-时又变为了-1,然后将其与1相加,结果为0,再将其转换为字符串,连接最后的"2"运算对象,得到"02"。

例4:+"1" + "1" + "2"输出:"112"说明:虽然第一个运算对象"1"因为前缀的一元+运算符类型转换为数值,但又立即转换回字符串,当连接到第二个运算对象"1"的时候,然后又和最后的运算对象"2"连接,产生了字符串"112"。

例5:"A" - "B" + "2"输出:"NaN2"说明:由于运算符-不能被应用于字符串,并且"A"和"B"都不能转换成数值,因此,"A" - "B"的结果是NaN,然后再和字符串"2"连接,得到"NaN2"。

例6:"A" - "B" + 2输出:NaN说明:参见前一个例子,"A" - "B"结果为NaN。但是,应用任何运算符到NaN与其他任何的数字运算对象,结果仍然是NaN。

16.下面的递归代码在数组列表偏大的情况下会导致堆栈溢出。在保留递归模式的基础上,你怎么解决这个问题?

var list = readHugeList();

var nextListItem = function() {

var item = list.pop();

if (item) {

// process the list item...

nextListItem();

}

};

潜在的堆栈溢出可以通过修改nextListItem函数避免:

var list = readHugeList();

var nextListItem = function() {

var item = list.pop();

if (item) {

// process the list item...

JavaScript试题集7

一. 单选题 1. 我们可以在下列哪个HTML 元素中放置javascript 代码? A.< script > B.< javascript > C.< js > D.< scripting > ★标准答案:A 2. 预测以下代码片段的输出结果: var str ; alert(typeof str); A.. string ; B.. undefined; C.. object ; D.. String; ★标准答案:B 3. 下列哪个不是Javascript 中注释的正确写法:( ) A.< !-- …… -- > B.//…… C./*……*/ D. /* …… */ ★标准答案:A 4. 以下哪项不属于Javascript 的特征? A.Javascript 是一种脚本语言 B.Javascript 是事件驱动的 C.Javascript 代码需要编译以后才能执行 D.Javascript 是独立于平台的 ★标准答案:C 5. 关于以下两个陈述的描述中,正确的是:( ) 陈述1:Javascript 是弱类型语言 陈述2:Javascript 的常用类型包括:int 、string 、boolean A.陈述1正确,陈述2错误 B.陈述1错误,陈述2正确 C.两个陈述都正确 D.两个陈述都错误 ★标准答案:A 6. 阅读下面的JavaScript 代码: < HTML > < BODY > < SCRIPT LANGUAGE="JavaScript" > function f(y) { var x=y*y; return x; } for(x=0;x< 5;x++) { y=f(x); document.writeln(y); } < /SCRIPT > < /BODY > < /HTML > 输出结果是()。 A.0 1 2 3 4 B.0 1 4 9 16 C.0 1 4 9 16 25 D.以上答案都不对 ★标准答案:B 7. 在Javascript 中,需要声明一个整数类型的变量num ,以下 哪个语句能实现上述要求? A.int num;

javascript期末考试模拟题

、单项选择题(本题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的 ,请将其正确答案涂写在答题卡 上。 1. 以“s”为文件扩展名的文件是 _________ (A) html 文件 (B)网页文件 (C) Java 文件 (D) Javascript 文件 2. 以下合法的变量名是 ______ (A) new (B) _123 3. 以下正确的字符串是___ (A) xyz (B) xyz"' 4. 设有语句: var st1= test st1=st1+ 25; 贝U st1的值是 _____ 。 (A) test25 ' (B) 25 5. 123+ ”789 ”的值是 _____ _ (A) 123789 ' (B) 912 6. 表达式(a=2,b=5,a>b?a:b (A) 2 (B) 5 的值为 _______ 8. 设 var a=2,b=3; 则 a++==b?(a-1):b _ 的结果是 。_ A) 0 B) 1 C) 2 D) 3 9. 下面while 循环执行的次数为 __________ var i=5; while (i==0) i--; A)无限 B) 1 C) 5 D) 0 (C) null o (C) xyz ' (D) 2abc (D) xyz ' (C) test ' (D)语法错误 (C) 789 ” (D)语法错误 )的值是 。 (C) 1 (D) 0 7. 设有语句 var a=3,b=5,c=3,d=8,m=3,n=2; 则逻辑表达式(m=a>b)&&(n=c>d) 运算后,n (A) 0 (B) 1 (C) 2 (D) 3

javascript期末考试模拟题

一、单项选择题(本题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其正确答案涂写在答题卡上。 1. 以“.js”为文件扩展名的文件是______。 (A) html文件(B) 网页文件(C) Java文件(D) Javascript文件 2.以下合法的变量名是______。 (A) new (B) _123 (C) null (D) 2abc 3.以下正确的字符串是______。 (A) xyz (B) ‘xyz” (C) “xyz’ (D) ‘xyz’ 4.设有语句: var st1=’test’; st1=st1+ 25; 则st1的值是______。 (A) ‘test25’ (B) 25 (C) ‘test’(D) 语法错误 5.123+”789”的值是______。 (A) ‘123789’ (B) 912 (C) “789”(D) 语法错误 6.表达式(a=2,b=5,a>b?a:b)的值是______。 (A) 2 (B) 5 (C) 1 (D) 0 7.设有语句var a=3,b=5,c=3,d=8,m=3,n=2; 则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为_______。 (A) 0 (B) 1 (C) 2 (D) 3 8.设var a=2,b=3; 则a++==b?(a-1):b的结果是___________。 A) 0 B) 1 C) 2 D) 3 9. 下面while循环执行的次数为________。 var i=5; while (i==0) i--; A)无限B) 1 C) 5 D) 0 10. 以下数组的定义中____________是错误的。 A) var a=new Array(); B) var a=new Array(10); C) var a[10]={ 1,2,3}; D) var a=["1",2,"3"]; 11.设var x=3,y=4; 下列表达式中y的值为9的是________。 A)y*=x-3 B)y/=x*9 C)y-=x+10 D)y+=x+2 12. 在程序中有多个相关联的选项,若要默认选择某一项,应在该项中增加_________属性。 A) checked B) default C) selected D) defaultValue 13.结果为NaN的表达式是______。 (A) "80"+"19" (B) "十九"+"八十" (C) "八十"*"十九" (D) "80"*"19" 14.执行下面语句后c的值是_______。 var a=2,b=1,c=3; if(a

JavaScript笔试题

《使用JavaScript增强交互效果》内部测试-笔试试卷 一、选择题(单选或多选题) 1.下面HTML标签中,默认占据整行的是(AB )。 A.

B.
C. D. 2.下面选项中,(AC )可以设置网页中某个标签的左外边距为5像素。A.margin:0 5px B.margin:5px 0 0 0; C.margin:0 0 0 5px; D.padding-left:5px; 3.在CSS中,为页面中的某个DIV标签设置以下样式,则该标签的实际宽度为(D )。div { width:200px; padding:0 20px; border:5px; } A.200px B.220px C.240px D.250px 4.在HTML中,DIV默认样式下是不带滚动条的,若要使
标签出现滚动条,需要为该标签定义( C )样式。 A.overflow:hidden; B.display:block; C.overflow:scroll; D.display:scroll; 5.阅读下面HTML代码,下面选项中增加的样式可以使两个DIV不在同一行显示的是(BD )。

......

...... A..box2{ clear:left; } B..box2{ clear:both; } C..box1{ clear:right; } D..box2 { clear:right; } 6.某页面中有一个1行3列的表格,其中表格行的id为row1,下列选项中能在表格中增加一列,并且这一列显示在最后面的是(C)。 A.document.getElementById("row1").Cells(3); B.document.getElementById("row1"). insertCell (2); C.document.getElementById("row1").insertCell(3); D.document.getElementById("row1").insertCell(0); 7.下列正则表达式中(B )可以匹配首位是小写字母或数字,其它位数是小写字母的最少 两位的字符串。 A./^ \w{2,}$/ B./^ [a-z0-9][a-z]+$/ C./^ [a-z0-9][a-z]*$/ D./^ [a-z0-9]\d+$/ 8.关于HTML中的表格和样式,下面说法错误的是( D )。 A.表格的边框可以使用CSS来控制 B.单元格的尺寸可以使用CSS来控制 C.单元格的背景颜色可以使用CSS来控制 D.单元格的跨行或跨列可以使用CSS来控制 9.CSS样式background-position:5px -10px代表的意义是( D )。 A.背景图片向左偏移5px,向下偏移10px B.背景图片向左偏移5px,向上偏移10px C.背景图片向右偏移5px,向下偏移10px D.背景图片向右偏移5px,向上偏移10px

Javascript考试题目选择题

复习题 一、选择题 1、写“Hello World”的正确javascript语法是?(A) A. document.write("Hello World") B. "Hello World" C. response.write("Hello World") D. ("Hello World") 2、JS特性不包括( D ) A.解释性 B.用于客户端 C.基于对象 D.面向对象 3、下列JS的判断语句中( )是正确的(A) A.if(i==0) B.if(i=0) C.if i==0 then D.if i=0 then 4、下列JavaScript的循环语句中( )是正确的( D ) A.if(i<10;i++) B.for(i=0;i<10) C.for i=1 to 10 D.for(i=0;i<=10;i++) 5、下列的哪一个表达式将返回假( B ) A.!(3<=1) B.(4>=4)&&(5<=2) C.(“a”==”a”)&&(“c”!=”d”) D.(2<3)||(3<2) 6、下列选项中,( )不是网页中的事件(D) A.onclick B.onmouseover C.onsubmit D.onpressbutton 7、有语句“var x=0;while(____) x+=2;”,要使while循环体执行10次,空白处的循环判定式应写为:( C ) A.x<10 B. x<=10 C.x<20 D.x<=20 8、JS语句( B ) var a1=10; var a2=20; alert(“a1+a2=”+a1+a2) 将显示( )结果 A.a1+a2=30 B.a1+a2=1020 C.a1+a2=a1+a2 9、将字串s中的所有字母变为小写字母的方法是( B) A.s.toSmallCase() B.s.toLowerCase() C.s.toUpperCase() D.s.toUpperChars() 10、以下( )表达式产生一个0~7之间(含0,7)的随机整数. ( C ) A.Math.floor(Math.random()*6) B.Math.floor(Math.random()*7) C.Math. floor(Math.random()*8) D.Math.ceil(Math.random()*8) 11、产生当前日期的方法是( C ) A.Now(); B.Date() C.new Date() D.new Now() 12、如果想在网页显示后,动态地改变网页的标题( C ) A.是不可能的 B.通过document.write(“新的标题内容”) C. 通过document.title=(“新的标题内容”) D. 通过document.changeTitle(“新的标题内容”) 13、某网页中有一个窗体对象,其名称是mainForm,该窗体对象的第一个元素是按钮,其名称

javascript期末考试

javascript 1、数据类型有哪些? 答:1 数字型:整数(number)、十六进制、八进制、浮点型(1.3) 2 字符串型:(string) 3 布尔型: (true) 4 特殊数据类型:转义字符(\b)、未定义值(undefined)、空值(nll) 2、什么是Cookie?如何读写Cookie?Cookie有什么作用? 答:Cookie:1.是web服务器保存在用户计算机上的文本文件的小块用户信息。 2.是浏览器提供的一种机制 3.包括临时和永久两种。 Cookie的写入:先将Cookie的名称和Cookie的值放入一个变量中,然后将变量赋给Document对象的cookie属性。当用户将Cookie写入后,新的Cookie字符串自动添加到原来Cookie字符串的后面。如:var cookiename=”name4”; V ar cookievalue=”value4”; V ar totalcookie=cookiename+”=”+cookievalue; Document.cookie=totalcookie; Cookie的读取:使用document.cookie读取cookie Cookie的主要用途:1.保存用户登录状态。2.跟踪用户行为。3.创建购物车。4.实施民意测验 3、循环语句: For语句、while语句、do ... While语句。 4、常用的javascript数据结构: 标示符、关键字、常量、变量 5、运算符: 算数运算符、比较运算符、赋值运算符、字符运算符、布尔运算符、条件运算符、其他运算符。 1 水仙花数 new document 水仙花数

2 阶乘 B. C. D.

《网页设计与制作》期末考试试题与及答案

《网页设计与制作》期末考试试题 一、单项选择题(本大题共30小题,每小题2分,共60分) 1、目前在Internet上应用最为广泛的服务是( )。 A、FTP服务 B、WWW服务 C、Telnet服务 D、Gopher服务 2、域名系统DNS的含义是( )。 A、Direct Network System B、Domain Name Service C、Dynamic Network System D、Distributed Network Service 3、主机域名center. nbu. edu. cn由四个子域组成,其中( )子域代表国别代码。 A、center B、nbu C、edu D、cn 4、当阅读来自港澳台地区站点的页面文档时,应使用的正确文本编码格式是( )。 A、GB码 B、Unicode码 C、BIG5码 D、HZ码 5、当标记的TYPE属性值为( )时,代表一个可选多项的复选框。 A、TEXT B、PASSWORD C、RADIO D、CHECKBOX 6、为了标识一个HTML文件开始应该使用的HTML标记是( )。 A、

B、 C、 D、 7、在客户端网页脚本语言中最为通用的是( )。 A、javascript B、VB C、Perl D、ASP 8、在HTML中,标记的Size属性最大取值可以是( )。 A、5 B、6 C、7 D、8 9、在HTML中,单元格的标记是( )。 A、 D、 10、在DHTML中把整个文档的各个元素作为对象处理的技术是( )。 A、HTML B、CSS C、DOM D、Script(脚本语言) 11、下面不属于CSS插入形式的是( )。 A、索引式 B、内联式 C、嵌入式 D、外部式 12、在网页中最为常用的两种图像格式是( )。 A、JPEG和GIF B、JPEG和PSD C、GIF和BMP D、BMP和PSD 13、如果站点服务器支持安全套接层(SSL),那么连接到安全站点上的所有URL开头是( )。 A、HTTP B、HTTPS C、SHTTP D、SSL 14、在HTML中,要定义一个空链接使用的标记是( ). A、 B、 C、 D、 15、对远程服务器上的文件进行维护时,通常采用的手段是( ) A、POP3 B、FTP C、SMTP D、Gopher 16、下列Web服务器上的目录权限级别中,最安全的权限级别是( ) A、读取 B、执行 C、脚本 D、写入 17、用Fireworks切割图形时,需要的工具是() A、裁剪 B、选取框 C、切片 D、自由变形 18、Internet上使用的最重要的两个协议是( ) A、TCP和Telnet B、TCP和IP C、TCP和SMTP D、IP和Telnet 19、body元素用于背景颜色的属性是() A、alink B、vlink C、bgcolor D、background 20、下面说法错误的是( )

javascript考试试题库2

Javascript综合复习题 【提示:本综合复习题的目的是让同学们多见识各种题目。选择题、填空题以及程序阅读题可以仔细做,对于程序实现和简答题建议先理解再记忆,切记死背答案。】 第一部分:单选题 1. Javascript中, 以下哪条语句一定会产生运行错误?答案( B ) A、var _变量=NaN; B、var 0bj = []; C、var obj = //; D、var obj = {}; 2. 以下两个变量a和b,a+b的哪个结果是NaN?答案( C ) A、var a=undefind; b=NaN B、var a= ‘123’; b=NaN C、var a =undefined , b =NaN D、var a=NaN , b='undefined' 3. var a=10; b=20; c=4; ++b+c+a++ 以下哪个结果是正确的?答案( B ) A、34 B、35 C、36 D、37 4. Javascript中, 以下代码运行后变量y的值是:答案( D ) var x = [‘abcde’ , 123456]; var y = typeof typeof x[1]; A、"function" B、"object" C、"number" D、"string" 5. Javascript中, 以下那两个变量的值不是==:答案( B ) A、var a=0 , b=-0; B、var a=NaN , b=NaN; C、var a=null , b=undefined; D、var a=[] , b=false; 6. Javascript中, 以下声明变量语句中哪个不正确?答案( D ) A、var aa; B、var bb=3; cc='good'; C、var dd = ee = 100; D、var ff=3, gg='he's good'; 7. Javascript中, foo对象有att属性,那么以下获取att属性值的表达式哪个是错误的?答案( C ) A、foo.att B、foo["att"] C、foo{"att"} D、foo["a"+"t"+"t"] 8. Javascript中, 以下代码运行后变量y的值是:答案( B ) var x = [typeof x, typeof y][1]; var y = typeof typeof x; A、"number" B、"string" C、"undefined"

HTML网页设计期末考试试卷

HTML考试题 1、下面有关样式表的说法正确的是()。(选择二项) a)通过样式表,用户可以使用自己的设置来覆盖浏览器的常规设置 b)样式表不能重用 c)每个样式表只能链接到一个文档 d)样式表可以用来设置字体、颜色等 2、在html中,使用外部JS文件的语句为()。(选择一项) a) b) c) d) 3、关于html中的事件,说法正确的是()。(选择二项) a)当输入焦点转移到input输入框时,将触发对象的onFocus事件 b)当输入焦点转移到input输入框时,将触发对象的onBlur事件 c)当输入焦点移出input输入框时,将触发对象的onFocus事件 d)当输入焦点移出input输入框时,将触发对象的onBlur事件 4、向html文档中插入javascript脚本时,正确的标记是()。(选择一项) a) b)…… c) d)…… 5、网页编程中,运行下面的javascript代码,则提示框中显示()。(选择一项) a)2 b) 2.5 c) 32/2 d) 16 6、如果要在网页上显示"20060816",空格处应填写的javascript代码是()。(选择一项) var year = 2006; var month = 8; var date = 16; document.write(____);//此处填写代码 a)year+month+date b)year+0+month+date c)year+"0"+month+date d)year+""+month+""+date 7、分析下面的javascript代码:x=11;y="number";m=x+y;m的值为()。(选择一项) a)11number

JS考试题目

(1)、JavaScript中声明一个变量所用的关键字是var。(2)看以下JavaScript程序 var a,b,c; a=“2”; b=2; c=a+b; 运行以上程序后,变量c的值为“22”。 (3)看以下JavaScript程序* var x,y; x=10; y=x++; 运行以上程序后,变量y的值为10 。 (4)看以下JavaScript程序** var i,j; i=0; j=i&&(++i); 运行以上程序后,变量j的值为 0 。 (5)看以下JavaScript程序* var i; i=8; do{ i++; }while(i>100); 运行以上程序后,变量i的值为9 。 (6)看以下JavaScript程序* for(var i=1;i<=10;i++){

if(i= =5) continue; if(i= =8) break; alert(i); } 运行以上程序后,弹出的对话框依次输出的值为1,2,3,4,6,7。 (7)看以下JavaScript程序 var str1,str2,str3,str4; str1=""; str2="8"; str3=str1+str2; alert(str3); str4=Number(str1)+Number(str2); alert(str4); 运行以上程序后,弹出的对话框依次输出的值为 , 。(8)定义JavaScript函数所用的关键字是function。 (1)alert();的作用是:( A ) A、弹出对话框,该对话框的内容是该方法的参数内容。 B、弹出确认对话框,该对话框的要用户选择“确认”或“取消”。 C、弹出输入对话框,该对话框的可让用户输入内容。 D、弹出新窗口。 (2)看以下JavaScript程序 var num; num=5+true; 问:执行以上程序后,num的值为(D)

JavaScript期末测试题

1、选择题:9题 1、要求用JavaScript实现下面的功能:在一个文本框中内容发生改变后,单击页面的其他部分将弹出一个消息框显示文本框中的内容,下面语句正确的是() A. B. C. D. 正确答案是: B 2、在HTML页面中,下面关于Window对象的说法不正确的是()。 A.Window对象表示浏览器的窗口,可用于检索有关窗口状态的信息 B.Window对象是浏览器所有内容的主容器 C.如果文档定义了多个框架,浏览器只为原始文档创建一个Window对象,无须为每个框架创建Window对象 D.浏览器打开HTML文档时,通常会创建一个Window对象 正确答案是: C 3、window的哪个方法可以显示输入对话框?() A.confirm() B.alert() C.prompt() D.open() 正确答案是: C 4、open()方法的哪个外观参数可以设置是否显示滚动条?() A.location B.menubar C.scrollbars D.toolbar 正确答案是: C 5、在Javascript语言中,当元素失去了焦点时激发的事件是( ) A.Focus B.UnLoad C.MouseOver D.Blur 正确答案是: D 6、DHTML不具备的优点是() A.动态样式 B.动态语法 C.动态内容 D.动态定位

《JAVASCRIPT程序设计》期末复习题(答案)新

《JavaScript程序设计》期末复习题 笔试与上机各占50分,考试时间为100分钟 (笔试部分50分,考试时间40分钟) 一、判断题(1’×10=10’) 1.Jscript与JavaScript的区别 2.JavaScript区分大小写 3.“”是HTML注释标记,“//”是JavaScript注释标记 4.JavaScript是无类型的计算机语言,JavaScript会根据需要对数据进行自动转换。 5.在HTML文档中,超链接即被称为锚,但在JavaScript中,link对象代表超链接,而不是锚(anchor)对象来代表。 6.display:none和visibility:hidden都可以实现隐藏元素在前台的显示,但visibility:hidden 保证原有位置不被占用。 7.函数如果需要返回一个特定类型的值,必须使用return语句。 8.JavaScript不会检测函数所传递的实际参数和形式参数的类型和数量。 9.getElementById()用来获取ID标签属性为指定值的第一个对象;getElementsByName()用来获取name标签属性为指定值的所有对象的集合。 10.含有与不含有框架结构的浏览器窗口的关闭方法。 11.在JavaScript中,数组元素可以是任何类型的数据。 12.JavaScript不支持真正意义上的多维数组,但是由于其数组元素可以是数组,所以可以通过将数组保存在数组元素中来模拟多维数组。 13.Cookie用来在客户器端保存一些数据,其数量和大小均有限制。 14.location对象的href属性可实现重新加载新页面功能,document对象的location属性不能实现此功能。 15.在JavaScript中的单选按钮(radio),不能通过单击“选中”和“未选中”来进行切换。 二、选择题(2’×20=40’) 1.以下哪个变量名是非法的:() A.num_1 B.2sum C.Sum D._des 2.以下哪个单词不属于javascript保留字:() A.with B.parent C.case D.void 3.在JavaScript中用下面哪个关键字来定义变量:() A.int B.document C.char D.var 4.(778>787)?5:2的结果是:() A.2 B.5 C.5,2 D.3 5.在JavaScript表达式中12+"12"+"5"的结果是:() A.29 B.1217 C.126 D.12125 6.下列哪个方法可以使窗口显示上一个地址页面:()

IT公司面试笔试题库腾讯Javascript面试题

1. 以下关于JavaScript的说法,哪一个是正确的: (A) JavaScript语言是基于Java语言的一种实现 (B) JavaScript是一种解释性语言,不用编译就可以运行 (C) 在JavaScript中声明变量时必须明确声明变量的数据类型 (D) JavaScript脚本只能在浏览器中运行 2. 在以下代码段中,哪些变量是全局变量? (A) 只有a (B) a和c (C) b和c (D) a、b、c都是 3. 以下关于事件属性的说法,错误的是: (A) onmouseup事件属性表示当鼠标按键被松开时执行脚本 (B) onabort是img元素的事件属性,表示当图像加载中断时执行脚本 (C) onload事件仅在body和frameset元素中有效 (D) 任何元素都有onclick事件属性 4. 以下创建函数的代码,错误的是: (A) function foo() { alert("hi"); } (B) var foo = function() { alert("hi"); } (C) var foo = new Function("", "alert('hi');" ); (D) var foo() { alert("hi"); } 5. 以下描述中错误的一个是: (A) 执行语句var a; alert(a),打印的内容为undefined (B) 执行语句var a = window.age; alert(a),打印的内容为undefined (C) 执行语句var a,b; a = typeof(b); alert(a),打印的内容为undefined (D) 执行语句var a,b=null; a = typeof(b); alert(a),打印的内容为undefined 6. 执行下面的代码打印出来的结果,正确的是: (A) 4 (B) 5 (C) 6 (D) 7 7. 以下创建自定义对象的写法,错误的是: (A)

javascript试题

1 . 分析下面的JavaScript代码,经过运算后m的值为() x=11; y=“number”; m=x+y; A.11number B.number C.11 D.程序报错 2 . target属性中,能够在新窗口打开页面的是(): A._self B._parent C._blank D._top 3 . 在HTML中如有如下代码,运行后页面显示结果为()。 A.整个网页里面活动链接的颜色为红色 B.整个网页里面文字颜色为红色 C.整个网页里面用户访问过的链接的颜色为红色 D.整个网页背景为红色 4. 产生当前日期的方法是( ) A.Now(); B.Date() C.new Date() D.new Now() 5 . 写"Hello World" 的正确Javascript 语法是? A. ("Hello World") B. "Hello World" C. response.write("Hello World") D. document.write("Hello World") 6. 分析下面JavaScript代码段,输出结果是()。 var mystring=”I am a stuent”; a=mystring.indexOf(“am”); document.write(a);(选择一项) A. 3 B. 4 C. 2 D. 1 7. 在HTML中,以下代码()可以正确显示如图所示的对话框。 A. B. C.

Javascript笔试选择题

总分100 考试时间:50分钟 单项选择题(每题2分,共50题) 1、关于JavaScript说法正确的是:(C) a)JavaScript与Java语法完全一样 b)JavaScript要运行必须安装Java运行环境 c)JavaScript一般用于在网页上实现数据验证及特效等 d)JavaScript可于开发Windows应用程序 2、对于代码:分析正确的是(C) a)Onclick表示鼠标移上去的事件 b)这个代码运行时将报错 c)点击这个按扭时弹出提示框,并显示“你好” d)必须把alert改为window.alert才能正常运行 3、对方法声明中的错误代码:function Add(int i1,int i2) 分析正确的是(A) a)参数不能指定数据类型 b)没有指定返回类型 c)没有指定访问 d)Function不是方法声明的关键字 4、对于代码:document.getElementById("div1").innerHTML 说法正确的是(C) a)语法错误 b)这段代码是获得div1标签对象 c)这段代码是获得div1标签内的HTML文本 d)这段代码是获得div1标签包含div1标签在内的HTML文本 5、代码:document.bgColor="red" 的意思是(C) a)设置网页的文字颜色为红色 b)设置ID为document的标签的背景色为红色 c)设置网页的背景色为红色 d)语法错误 6、代码:'abcdefg'.substring(2,3) 的结果是(C) a)cde b) b c) c d)bcd 7、代码:'abcdefg'.indexOf('D') 结果是(C) a) 4 b) 3 c)-1 d)0 8、关于document对象的属性错误的是(B) a)bgColor是它的属性 b)close是它的属性

JavaScript编程考试题

一、选择题 1、用来设定背景颜色的HTML标记是(C)。 A) yellow B) C) D) 2、需要将文字的字体显示为粗体,正确的HTML标记是(D)。 A) B) C) D) 3、在JavaScript 中,实现在浏览器的状态栏中设置自己的信息的选项(B) 是。 A) statusbar = "put your message here" B) window.status = "put your message here" C) status("put your message here") D) window.status("put your message here") 4、页面中需要增加链接,正确的HTML代码是(A)。 A) W3Schools B) https://www.360docs.net/doc/478978679.html, C) https://www.360docs.net/doc/478978679.html, D) https://www.360docs.net/doc/478978679.html, 5、HTML 这个缩写名词所代表的具体含义是(B)。 A) Home Tool Markup Language B) Hyper Text Markup Language C) Hyperlinks and Text Markup Language D) HomePage Tool Markup Language 6、制定Web 标准的机构是(B)。 A) Microsoft (微软公司) B) The World Wide Web Consortium (W3C协会) C) Netscape(网景公司) D) Sun 公司 7、获得与数字7.25 相距最近的整数的JavaScript 语句是

Javascript期末试题

《 》试卷A 第 1 页 共 1 页 绝密★启用前 学院 学年第二学期期末考试 级 专业( )《Javascript 》试卷 一选择题(共30分,每题2分) 1.每个web 文档都有一个唯一的地址叫做________. ( ) A.IP 地址 B.超文本连接 C.URL D.域名 2.程序设计语言规则叫做________. ( ) A.过程 B.汇编 C.语法 D.逻辑 3.代表浏览器窗口内容的javascript 对象叫做_____对象. ( ) A.document B.html C.browser D.contents 4.在javascript 中,网页的新文本创建是用write()方法或者____. ( ) A.output() B.writeln() C.print() D.println() 5.javascript 源代码文件调用是通过标记对之间 C.在 (b )……. (c )web 浏览器窗口 (d )html 文档 12.Document 对象代表__________。( ) (a ) 表单中的对象 (b )web 浏览器窗口 (c )窗口中显示的html 文档(d )html 文档中显示的所有javascript 函数和方法 13.SetTimeOut ()方法中所设置的超时参数,其单位是什么。( ) (a )微秒 (b )秒 (c ) 分 (d )10妙间隔 14.哪一个符号可以用来给一个框架分配剩下的屏幕空间( )。 (a )* (b ) & (c ) % (d ) # 15.用来获取当前web 浏览器信息的对象是( )。 (a )windows (b ) Browser (c ) Explorer (d )Navigator 一.填空题(共20分,每题2分) 1. 要引用同一个框架集中的框架,必须使用_________________属性。 2. 保留字或________________是javascript 语法的一部分。 3. 返回给调用函数值的语句是通过_________________语句完成的。 4. 当html 文档在web 浏览器中结束装在时_______________时间发生。 5. 布尔值在javascript 中是逻辑的____________或 ___________。 6. _______________标记用于创建与用户交互作用的输入域。 7. 在语句 returnavlue = 50 = =”fifty” 执行后 returnavlue = ___________。 8. 表达式4*(2+3)|| 1-1 的值为________________。 9. 由alert( ) 方法显示,含一个“确认”按钮。 10.在JavaScript 的内置对象中,除了Math 等极个别对象以外,其他对象都要使用new 运算符来 创建一个变量;创建格式: 变量名=_______________ 对象名( )。 二.简答题(共20分,每题5分) 1. 在JavaScript 中可以使用对象有几种类型? 2. 简述在JavaScript 中对象的属性和方法所表示的含义各是什么? 3. 简述JavaScript 的基本特点 ? 4. 什么是Web ? 三.编程题 (共30分,每题15分) 1. 编写通过在HTML 中嵌入JavaScript 脚本显示“Hello World!”的程序。 2. 编程用JavaScript 脚本语言把“张珊” 和 “25”分别赋给“name” 和“age ”两变量,并输 出他们的值。 Javascript 试题第3 页 共4页 Javascript 试题第4页 共4页

B、 C、