1.下面程序的运行结果是:

function test(x, y, z) {
alert(test.length);
alert(arguments.length);
alert(arguments.callee === test);
alert(arguments[2]);
}
test(10, 20);

A.2,3,true,0  B.3,3,false,20  C.3,2,true,undefined  D.2,3,false,10

分析:test.length是返回的函数的形参个数,所以为3;

    arguments.length返回的是函数调用时的实参个数,所以为2;

   arguments.callee:初始值就是正被执行的 Function 对象,用于在函数内部调用自身,特别是函数本身为匿名函数时,要在内部调用自己,那么它就闪亮登场了

   arguments对象本身是个由函数调用时传入的实参组成的伪数组,访问单个参数的方式与访问数组元素的方式相同。索引 n 实际上是 arguments 对象的 0…n 属性的其中一个参数。由于调用test时,没有传入第三个参数,所以返回undefined

扩展:谈到arguments,在说说它的另一个应用,刚才谈到arguments.length返回的是函数调用时的实参个数,那么通过判断这个实参个数,我们就可以优雅的模拟实现js的”重载“了

function doAdd() {

  if(arguments.length == 1) {
alert(arguments[0] + 5);
} else if(arguments.length == 2) {
alert(arguments[0] + arguments[1]);
}
} doAdd(10); //输出 "15"
doAdd(40, 20); //输出 "60"

当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。

虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。

2. 下面程序的运行结果是:

var x = 30;
function test(){
alert(x);
var x = 10;
alert(x);
x = 20;
function x() {};
alert(x);
}
test();

A.30,10,function x(){}  B.undefined,10,20

C. function x(){},10,20  D. 30,10,20 
分析:  进入test函数,第一个alert(x)返回的是function x(){},为什么了?这个就要从js的预解析谈起了,进入函数的作用越后,js会首先读取变量和函数的声明,当变量和函数重名时(不管谁先谁后),函数名优先(具体的原因,我将稍后单独写一篇随笔)所以    这个地方x指向了function x(){}。为什么不是外面的x=30了?因为在test函数的作用域里,能够找到x的声明,所以相当于内部x将外部的x给屏蔽了!

    执行第二个alert(x)时,前面一行已经给x赋值为10,所以为10;

执行第三个alert(x)时,变量x已经被赋值为20了,那么function x(){}对x有什么影响了?没有任何影响,因为它就仅仅是个函数声明。所以为20

3. 下面程序的运行结果是:

 function test() {
var x = 10;
var y = 20;
return function () {
alert([x, y]);
};
}
var x = 30;
var y = 40;
var temp = test();
temp();

A.30,40  B.10,40  C.10,20  D.30,20

分析: 显示,通过temp此时已经是一个函数了,它相当于   temp = function(){ alert([x,y])}。此时关键是看x,y的值了,到底是指向test函数里里面的值了还是外面。

此处又涉及到了 闭包,即test内部的x,y没有释放,原因就是alert([x,y])引用了它,所以答案是 C

4. 1), 2) ,3)的运行结果分别是:

1) false == 0

2) "5" + 3

3)"5" + {
toString: function(){return this;},
valueOf: function(){return "valueOf";}
}

A.true,"8","5this"         B.false,8,"5valueOf"

C.true,"53","5valueOf"     D.fasle,"53","5[object Objetc]" 
分析:1中为true,因为==会执行一个类型自动转化,Number(false)的值为0,Boolean(0)的值为false;

2,“+”此时是做为链接符号存在的。ECMAScript262中规定,首先对"+"前后的两个表达式进行求值,即调用valueof方法。再调用typeof对他们的类型进行判断,如果有一个类型为string的则都将转化为string。所以后面的3会被转化为string类型。如果此处为“-”,则答案为2,会将前面的“5”转化为number类型
         3,在2中已经说到,“+”后面的对象,首先会调用valueOf(),所以后面的对象的求值结果为“valueOf”,也是字符串。最后直接连接在一起。

5. 1), 2)的运行结果是:

1)

var test = {x: 10};

var temp = {
x: 20,
do: function (){ alert(this.x);}
}; temp.do(); test.do = temp.do; test.do(); 2) var test = {
x: 10,
do: function (){ alert(this.x);}
}; var temp = test.do; temp();

A.20,20,10  B.10,20,undefined  C.20,10.undefined  D.20,10,10

 

6. 下面程序的运行结果是:

function A(){}

A.prototype.x = 10;

var a1 = new A();

A.prototype = { x:20, y:30 };

var a2 = new A();

alert(a1.x)

alert(a1.y)

alert(a2.x)

alert(a2.y)

A.20,30,20,30  B.10,undefined,10,undefined  C.10,undefined,20,30  D.10,30,20,30

7.如何阻止事件起泡?如何阻止事件默认行为?

8.列举几个常用的事件对象属性

9.举几个常用dom元素的属性和方法

10.块级元素有哪些?内联元素有哪些?块级元素与内联元素区别 

11.ie各版本css hack

12 . jQuery中$函数有几种用法

13. 如何从jQuery对象中得到匹配到的dom对象

14. jQueryevent.stopImmediatePropagation()方法作用

15. 检测一个变量是否是string类型 

16. 请写出一个正则表达式,验证以下数列:

有一个字符串:1,2,3,4,5,6,7,8,9,10,11,12 , 规律是一个数字后面跟一个逗号,最后一个数字后面没有逗号,并且数字只能是1到12中的任意一个

 17.实现一个insertAfter方法

js笔试题一套(未完待续)的更多相关文章

  1. asp.net面试题总结1(未完待续。。。。)

    1.MVC中的TempData\ViewBag\ViewData区别? 答:页面对象传值,有这三种对象可以传. Temp:临时的 Bag:袋子 (1)  TempData  保存在Session中,C ...

  2. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  3. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  4. [python]爬代理ip v2.0(未完待续)

    爬代理ip 所有的代码都放到了我的github上面, HTTP代理常识 HTTP代理按匿名度可分为透明代理.匿名代理和高度匿名代理. 特别感谢:勤奋的小孩 在评论中指出我文章中的错误. REMOTE_ ...

  5. 省钱版----查找 IoT 设备TTL线序__未完待续

    作者:仙果 原文来自:省钱版—-查找 IoT 设备TTL线序 省钱版----查找 IoT 设备TTL线序__未完待续 缘由 在IoT固件调试分析的过程中,建议首先在IoT设备的板子上焊接调试线,这是能 ...

  6. ASP.NET MVC 系列随笔汇总[未完待续……]

    ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...

  7. 关于DOM的一些总结(未完待续......)

    DOM 实例1:购物车实例(数量,小计和总计的变化) 这里主要是如何获取页面元素的节点: document.getElementById("...") cocument.query ...

  8. 我的SQL总结---未完待续

    我的SQL总结---未完待续 版权声明:本文为博主原创文章,未经博主允许不得转载. 总结: 主要的SQL 语句: 数据操作(select, insert, delete, update) 访问控制(g ...

  9. virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续)

    virtualbox搭建ubuntu server nginx+mysql+tomcat web服务器1 (未完待续) 第一次接触到 linux,不知道linux的确很强大,然后用virtualbox ...

随机推荐

  1. Phoenix表和索引分区数对插入和查询性能的影响

    1. 概述 1.1 HBase概述 HBase由master节点和region server节点组成.在100-105集群上,100和101是master节点,102-105是region serve ...

  2. STL视频_02

    [01:05]主要讲一下几个要点: 1.模板.函数模板 类模板 以及它们的用法 2.容器.什么是容器 和 容器的分类,各种容器的数据结构 3.容器vector的具体用法,包括迭代器的具体用法 [01: ...

  3. 目标检测 — NMS

    1.非极大值抑制步骤 非极大值抑制算法(Non-maximum suppression,NMS)在目标检测中经常用到.我们的检测算法可能对同一目标产生多次检测的结果,非极大值抑制算法可以保证每个目标只 ...

  4. 2015 Benelux Algorithm Programming Contest (BAPC 15)E - Excellent Engineers

    这题想了很久没思路,不知道怎么不sort维护二维的最小值 emmmm原来是线段树/树状数组,一维sort,二维当成下标,维护三维的最小值 #include<bits/stdc++.h> # ...

  5. Eclipse集成c与c++

    1.eclipse 开普勒版本 2.安装mingw 3.配置环境变量mingw的 path 加入;C:\MinGW\bin 4.eclipse 中的市场搜索 CDT

  6. iOS 检查指定日期是否在当前日期之前

    iOS检查指定日期是否在当前日期之前, 直接上代码: - (BOOL)checkProductDate: (NSString *)tempDate { NSDateFormatter *dateFor ...

  7. LeetCode OJ:Binary Tree Level Order Traversal(二叉树的层序遍历)

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  8. switch case 语法

    switch (条件){ case 第一种: 执行语句 break: case 第二种情况: 执行语句 break: default: 执行语句: break: }

  9. BZOJ- 3142:数列 (数学)

    题意:给出N,K,M,P.求有多少长度为K的序列A,满足:(1)首项为正整数:(2)递增数列:(3)相邻两项的差小于等于m:(4)最后一个数小于等于N. 思路:根据差分来算数量. #include&l ...

  10. 使用自定义端口连接SQL Server 2008的方法

    版权声明:本文为博主原创文章,未经博主允许不得转载. 使用过SQL Server的人大多都知道,SQL Server服务器默认监听的端口号是1433,但是我今天遇到的问题是我的机器上有三个数据库实例, ...