前端笔试题----JavaScript部分

1、js有哪些内置对象?

对象名称 对象说明
Arguments 函数参数集合
Array 数组
Boolean 布尔对象
Date 日期时间
Error 异常对象
Function 函数构造器
Math 数学对象
Number 数值对象
Object 基础对象
RegExp 正则表达对象
String 字符串对象

2、this对象的理解?

  

3、eval是做什么的?

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>
//输出:
200
4
27

4、DOM怎样添加、移除、移动、复制、创建和查找节点?

一些常用的 HTML DOM 方法:

  • getElementById(id) - 获取带有指定 id 的节点(元素)
  • appendChild(node) - 插入新的子节点(元素)
  • removeChild(node) - 删除子节点(元素)

一些常用的 HTML DOM 属性:

  • innerHTML - 节点(元素)的文本值
  • parentNode - 节点(元素)的父节点
  • childNodes - 节点(元素)的子节点
  • attributes - 节点(元素)的属性节点

cloneNode() 复制节点


5、null和undefied的区别?

undefined表示变量声明但未初始化时的值

null表示准备用来保存对象,还没有真正保存对象的值。从逻辑角度看,null值表示一个空对象指针

null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。

Number(undefined)
// NaN

5 + undefined
// NaN

null + 5// 5

null

(1) 作为函数的参数,表示该函数的参数不是对象。

(2) 作为对象原型链的终点。

undefined

(1)变量被声明了,但没有赋值时,就等于undefined。

(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。

Object.getPrototypeOf(Object.prototype)
// null

var i;
i // undefined

function f(x){console.log(x)}
f() // undefined

var  o = new Object();
o.p // undefined

var x = f();
x // undefined

http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html

6、new操作符具体干了什么呢?

首先上一一个简单的 new 操作符实例

var Person = function(name){
    this.name = name;
    this.say = function(){
        return "I am " + this.name;
    };
}
var nyf = new Person("nyf");
nyf.say();

简单来说,上述例子中,以 new 操作符调用构造函数的时候,函数内部发生以下变化:

1、创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型。

2、属性和方法被加入到 this 引用的对象中。

3、新创建的对象由 this 所引用,并且最后隐式的返回 this 。

以上情况在 new 操作符调用下,后台就相当于

var Person = function(name){
    //var this = {};
    this.name = name;
    this.say = function(){
        return "I am " + this.name;
    };
    //return this;
}

对于以上的讲述不知道有没有讲清楚。

var obj = new Base();

相当于运行以下代码

var obj = {};
obj.__proto__ = Base.prototype;
Base.call(obj);

对于ES5中添加了 Object.create(),

if(typeof Object.create !== "function"){
    Object.create = function(o){
        function F(){};
        F.prototype = o;
        return new F();
    }
}

7、JSON的了解?

是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

本文主要是对JS操作JSON的要领做下总结。

在JSON中,有两种结构:对象和数组。

1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

例如:

var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串:

var str1 = ‘{ "name": "cxh", "sex": "man" }‘;

JSON对象:

var str2 = { "name": "cxh", "sex": "man" };

一、JSON字符串转换为JSON对象

要运用上面的str1,必须运用下面的要领先转化为JSON对象:

//由JSON字符串转换为JSON对象

var obj = eval(‘(‘ + str + ‘)‘);

或者

var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

或者

var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

然后,就可以这样读取:

Alert(obj.name);

Alert(obj.sex);

特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

二、可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串。

例如:

var last=obj.toJSONString(); //将JSON对象转化为JSON字符

或者

var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

alert(last);

留心:

上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。

8、call()和apply()的区别和作用?

Javascript的每个Function对象中有一个apply方法:

function.apply([thisObj[,argArray]])

还有一个类似功能的call方法:

function.call([thisObj[,arg1[, arg2[, [,.argN]]]]])

它们各自的定义:

apply:应用某一对象的一个方法,用另一个对象替换当前对象。

call:调用一个对象的一个方法,以另一个对象替换当前对象。

它们的共同之处:

用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。”

它们的不同之处:

apply:

最多只能有两个参数——新this对象和一个数组 argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面。如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj,并且无法被传递任何参数。

call:

则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

更简单地说,apply和call功能一样,只是传入的参数列表形式不同:如 func.call(func1,var1,var2,var3)   对应的apply写法为:func.apply(func1,[var1,var2,var3])

也就是说:call调用的为单个,apply调用的参数为数组

function sum(a,b){
    console.log(this === window);//true
    console.log(a + b);
 }
 sum(1,2);
 sum.call(null,1,2);
 sum.apply(null,[1,2]);

作用  

a、调用函数

var info = ‘tom‘;
function foo(){
    //this指向window
    var info = ‘jerry‘;
    console.log(this.info);  //tom
    console.log(this===window)   //true
}
foo();
foo.call();
foo.apply(); 

b、call和apply可以改变函数中this的指向  

var obj = {
        info:‘spike‘
};
foo.call(obj);    //这里foo函数里面的this就指向了obj
foo.apply(obj);

c、借用别的对象的方法

求数组中的最大值

var arr = [123,34,5,23,3434,23];
//方法一
var arr1 = arr.sort(function(a,b){
    return b-a;
});
console.log(arr1[0]);
//方法二
var max = Math.max.apply(null,arr)   //借用别的对象的方法
console.log(max);

9、如何获取UA?

10、介绍下Java和JavaScript的区别?

11、你有哪些性能优化的方法?

http://blog.csdn.net/mahoking/article/details/51472697

12、哪些常见的操作会造成内存泄漏?

http://www.cnblogs.com/chuaWeb/p/5196330.html

13、线程与进程的区别?

线程是进程中的一部分,进程包含多个线程在运行

一个程序至少有一个进程,一个进程至少有一个线程.

子进程和父进程有不同的代码和数据空间,而多个线程则共享数据空间,每个线程有自己的执行堆栈和程序计数器为其执行上下文。多线程主要是为了节约CPU时间,发挥利用,根据具体情况而定。线程的运行中需要使用计算机的内存资源和CPU。

时间: 2024-10-11 18:19:20

前端笔试题----JavaScript部分的相关文章

&lt;转&gt;网易2016实习生前端笔试题部分总结

网易2016实习生前端笔试题部分总结 原文地址:http://www.cnblogs.com/venoral/p/5325202.html 这只是部分题,答案为个人观点如有错误欢迎指出,感觉考点都挺基础,但是很注重考细节方面,通过整理也知道自己在CSS3和HTML5,网络知识等方面的不足还是得多学多练多思考.攒rp,希望自己在明天360笔试中能轻松答过~ css 1.多选 //HTML <p>很长的一段文字,很长的一段文字,很长的一段文字,特别长的文字</p> //CSS p{ w

阿里2道前端笔试题+堆糖2道前端笔试题

阿里前端笔试题 1.一个表格HTML代码如下 <table id="table1"> <tbody> <tr><td>1</td><td><button>Delete</button></td></tr> <tr><td>2</td><td><button>Delete</button></

经典的阿里前端笔试题

1 请说明下面各种情况的执行结果,并注明产生对应结果的理由. function doSomething() { alert(this); } ① element.onclick = doSomething,点击element元素后. ② element.onclick = function() {doSomething()}, 点击element元素后. ③ 直接执行doSomething(). 参考答案: 1.element:调用执行时直接指向事件元素. 2.window:函数调用中的 thi

前端笔试题总结---持续更新

写在前面:.... 1字符串逆序 function reverse(str){ return str.split("").reverse().join("");//直接用函数 var str1="";//从后向前输出 for(var i=str.length-1;i>=0;i--){ str1+=str[i]; } return str1; var len=str.length;//字符串原地逆序 for(var i=0;i<len;

也许你需要点实用的-Web前端笔试题

之前发的一篇博客里没有附上答案,现在有空整理了下发出来,希望能帮助到正在找工作的你,还是那句话:技术只有自己真正理解了才是自己的东西,共勉. Web前端笔试题 Html+css 1.对WEB标准以及w3c的理解与认识. 标签闭合,标签小写,不乱嵌套:提高搜索机器人的搜索几率: 使用外联的css和js,结构行为表现的分离:文件下载与页面加载速度更快,内容能被更广泛的设备所访问: 更少的代码和组件:容易维护,改版方便,不需要变动页面内容,提供打印版本而不需要复制内容,提高网站的易用性. 2.Xhtm

js+html+css实现简单页面交互功能(2015知乎前端笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2

js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2 密码:hellozhihu

前端笔试题:拍扁多维数组、提取URL中的参数变成对象、实现string的trim()函数、判断Email地址、16进制颜色转rgb格式

(1)拍扁数组 这是一个著名互联网公司今天的前端笔试题:多维数组维数不定,如[2,4,1,[2,3,4,[1,2],5,3],3,8]拍扁为[2,4,1,2,3,4,1,2,5,3,3,8].维数不定,应该要用递归: 答案: function flatten(arr){ var arrLength=arr.length; for(var i=0;i<arrLength;i++){ if(arr[i].constructor==Array){ arr.splice(i,1,flatten(arr[

前端笔试题汇总整理

一.Js对象 1.如何根据逗号分隔的字符串创建数组呢?请为下面的字符串创建一个数组,并访问第三个元素:"cats,dogs,birds,horses" 知识点:数组和字符串的转换.考察split() 方法.把一个字符串分割成字符串数组(将字符串按某个字符切割成若干个字符串,并以数组形式返回) var animalString="cats,dogs,birds,horses"; var animalArray=animalString.split(",&qu

前端笔试题笔记(回到顶部组件)

前端笔试题笔记(回到顶部组件) 题目要求:当页面向下滚动距顶部一定距离(如100px)时出现,向上回滚距顶部低于同样距离时隐藏,点击返回顶部组件时页面滚动到顶部: 这题一共4个问题要解决:向下滚动距顶部一定距离(如100px)时出现.上回滚距顶部低于同样距离时隐藏.点击返回顶部组件时页面滚动到顶部.始终定位在某个位置(一般来说是右下角) 第一个和第二个问题用在window.onscrollTop中,判断document.body.scrolTop的值加以判断即可,同时设定空间的display最原