javascript面试题

1、第一个为字母,后面是字母数字下划线总长度为5-20 正则:

 /^[a-zA-Z]\w{4-19}/

2、怎么规避javascript多人并发函数重命名问题:

根据不同的开发人员实现的功能,在函数名加前缀每个开发人员都把自己的函数封装到类中,然后调用的时候即使函数名相同,但是因为是要类.函数名来调用,所以也减少了重复的可能性

3、javascript如何实现面向对象中的继承

六中继承方式....更新中。。。

4、javascript如何检测一个变量是一个String类型的?请写出函数实现。

function a(obj){  return typeof(obj)=="string";}alert(a(123));alert(a("abc"));

5、javascript有几种数据类型基本数据类型:

Number(数字)String(字符串) null nudefined(未定义) boolean(布尔)引用数据类型:function(函数) object(对象)[Array]数组 Data(时间)RegExp正则 ...

6、AJAX是什么?同步和异步的区别?如何解决跨域问题?

AJAX的全称是Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。在不重新加载整个网页的情况下,对网页的某部分进行更新。

同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。而异步则这个AJAX代码运行中的时候其他代码一样可以运行。

[跨域引用文章]

JQuery的AJAX解决跨域问题:

$(document).ready(function() {

             var  url='http://localhost:8080/WorkGroupManagment/open/getGroupById"      +"?id=1&callback=?';

            $.ajax({

                    url:url,dataType:'jsonp',processData:false,type:'get',success:function(data) {

                                   alert(data.name);

                   }, error:function(XMLHttpRequest, textStatus, errorThrown) {

                                                 alert(XMLHttpRequest.status);

                                                 alert(XMLHttpRequest.readyState);

                                                  alert(textStatus);

                      }

});

});

JSONP也叫填充式JSON,是应用JSON的一种新方法,只不过是被包含在函数调用中的JSON(如:callback({"name", "chenjun"});)。JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据跨域原理:利用标签没有跨域限制,实现跨域目的

JSONP优缺点

优点:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行;并且在请求完毕后可以通过调用callback的方式回传结果

缺点:它只支持GET请求而不支持POST等其它类型的HTTP请求;它只支持跨域HTTP请求这种情况,不能解决不同域的两个页面之间如何进行JS调用的问题

CORS

CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。

跨域原理:CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败

浏览器支持情况:

Chrome 3+      Firefox 3.5+     Opera 12+       Safari 4+         Internet Explorer 8+

Chrome,Firefox,Opera和Safari都使用XMLHttpRequest2对象。 Internet Explorer使用了类似的XDomainRequest对象,其工作原理和XMLHttpRequest大致相同,但增加了额外的安全预防措施。

CORS优缺点:

优点:支持所有类型的HTTP请求;使用普通的XMLHttpRequest发起请求和获得数据,拥有良好的出错处理

缺点:老式浏览器不支持

7、给出异步加载js方案,不少于两种

[js异步加载的三种解决方案]

8、document.write和 innerHTML的区别?

document.write是直接将内容写入页面的内容刘,会导致页面全部重绘,innerHTML将内容写入某个DOM节点,不会导致页面全部重绘

9、如何添加HTML元素的事件,有几种方法?

[添加html元素的事件]

1通过HTML元素属性2通过对象属性3.通过W3C监听方式(标准方式)或者IE专属的中间模型添加事件

10、多浏览器检测通过什么?

[常见浏览器User-Agent大全]

window.navigator.userAgent这个查询当前浏览器型号版本但是window.userAgent也可以查询到不知道有没有区别

11、如何控制网页在网络传输过程中的数据量?

我一般这样处理:

服务器发送数据块前发送数据块长度,然后发送数据

客户端先读取这个长度,然后按这个长度接收数据。

什么面向对象


mvc这种框架有什么好处?

会让项目可维护性高,所有涉及界面的代码都在视图(view)中,所有涉及核心逻辑的代码都在模型(Model)里面。URL路由之类的代码都在控制器(Controller)中

预解释:

1、在预解释的时候,不管条件是否成立,都要进行预解释

2、预解释的时候只对等号左边的进行预解释,右边的是值,是不进行预解释的

3、函数体中return下面的代码虽然不在执行了,但是需要进行预解释;return后面的返回的是值,是不进行预解释的;

4、自执行函数的function是不进行预解释的

5、在预解释阶段,如果当前的这个名字已经声明过了,那么下面在遇到就不会在从新的声明了,但是需要重新的赋值;

in:用来检测某一个属性名是否属于这个对象的

this:

->我们一般只研究函数执行的时候里面的this

->this是谁和当前的函数在哪执行和在哪定义没有半毛钱的关系

1)看函数执行的时候,函数名之前是否有".",有的话"."前面是谁this就是谁,没有的话this就是window

2)自执行函数中的this永远是window

3)给元素的某一个事件绑定方法,当事件触发的时候,方法中的this是当前元素本身

4)在构造函数模式中,我们的this.xxx=xxx中的this是当前的类的一个实例

5)call和apply强制改变this的指向->以上所有的this情况在遇到call/apply的时候都不好使,都已强制改变的为主

obj.fn.call(1);//this->1

一般情况下,我们执行call方法第一个传递的参数值是谁,那么fn中的this就是谁

[在非严格模式下]

第一个参数没有传递值、传递的是null、传递的是undefined fn中的this都是window

[严格模式下]

第一个参数传递的是谁this就是谁,传递null/undefined,fn中的this都是对应的null/undefined,不传递值默认也是undefined

6)定时器的this永远是window

浏览器的内存分为两类:

堆内存:引用数据类型开辟的那个存储空间(用来存储对象的键值对和函数的代码字符串的) ->存储仓库

栈内存:就是我们的作用域(全局作用域/私有的作用域)->执行环境

[栈内存的释放]

全局作用域,在浏览器加载页面的时候形成,只有在浏览器关闭页面的时候才能释放->"全局作用域属于不销毁的作用域"

立即销毁的私有作用域:一般情况下,函数执行完成后,当前形成的这个私有的作用域,就没有用了,为了提高性能,浏览器会自动的把它释放掉

不销毁的私有作用域:函数执行形成一个私有的作用域A,但是A中的某一部分内容被A以外的东西(变量)给占用了,那么A这个作用域就不能销毁了

一个函数执行,形成一个私有的作用域A,A中返回一个引用的数据类型值(函数、对象、数组...),并且被外面的一个变量接收了,此时A这个作用域就不能释放了

闭包:

闭包是一种"机制":函数执行形成私有的作用域(不管销毁还是不销毁),保护了里面的私有变量不受外界的干扰

单例模式:

起到了一个分组的作用->把描述同一件事物的属性和方法放在同一个"命名空间"下,避免了全局变量过多使用造成的冲突

每一个对象都是一个单独的实例,里面的属性都是自己私有的属性,不同实例之间互不影响

JS中的异步编程:定时器、所有的事件绑定都是异步编程、回调函数也可以理解为异步编程、AJAX中也可以设置异步编程


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,916评论 0 106
  • 一、ajax原理是什么?ajax如何实现跨域?原理及过程? Q1:Ajax的工作原理:通过XmlHttpReque...
    迷人的洋葱葱阅读 291评论 0 2
  • 来源:BAT及各大互联网公司2014前端笔试面试题--JavaScript篇 1、JavaScript是一门什么样...
    darr250阅读 2,366评论 0 17
  • 「怕麻烦」是一种最坏的习惯。仔细观察一下,大多数人生活的困境,其实都是在作决策时因为「怕麻烦」而产生的。 学习时遇...
    曾晓超阅读 316评论 0 1
  • 2017.03.15 星期三 3月份事业目标: 一、3月31号前公司入账58000元的培训服务费,同时接收5家新客...
    木槿有点着迷阅读 365评论 0 2

友情链接更多精彩内容