当前位置: 首页 > Web前端 > CSS

献给你前端求职(下)

时间:2023-03-31 01:14:08 CSS

注:上一篇献给你前端求职(下),主要针对html和css中的两个常见问题前端面试。Basics,其实在真正的面试中,面试官往往会采用一个由难到易的套路,那么js和jQuery是最重要的,一些项目和所用技术的问题就是你必备的粮草储备啦!javascript什么是闭包(closure),为什么要用它?简单来说,闭包就是一个可以访问外部函数变量的函数。这是一个闭包。不懂就看代码,例如:functionaa(x){varnum=1;函数bb(y){console.log(x+y+(++num));aa函数中的bb函数是一个闭包。bb函数可以使用aa函数的局部变量和参数。最典型的闭包应该是这样的,会在函数Function中定义为返回值functionaa(x){varnum=1;函数bb(y){console.log(x+y+(++num));}returnbb;}闭包的另一个作用是隔离域,请看下面代码for(vari=0;i<2;i++){setTimeout(function(){console.log(i);},0);}上面代码的执行结果是2,2而不是0,1,因为for循环出来后,执行setTimeout里面的函数的时候,i的值已经变成了2。说说对This对象的理解.这是js的关键字。由于使用的函数不同,this的值也会发生变化。但是有一个通用的原则,就是this指的是调用函数的对象。this通常:是全局对象Global。作为方法调用,那么this指的是这个对象事件?IE和Firefox的事件机制有什么区别?如何停止冒泡?我们对网页进行的一个操作(有些操作对应多个事件)。例如:当我们点击一??个按钮时,就会产生一个事件。是可以被JavaScript检测到的行为。事件处理机制:IE是事件冒泡,Firefox是事件捕获;ev.stopPropagation();JavaScript作用域和作用域链?JavaScript作用域是指变量的作用域,内部作用域由函数的形参决定,实参、局部变量、函数组成,内部作用域和外部作用域层层链接,形成作用域链。在函数内部访问变量时,首先检查是否有内部作用域为这个变量,如果没有,就到这个对象的原型对象中去寻找。如果还没有,就去scope所在的scope,直到到达window所在的scope,每个函数在声明的时候都会默认有。存在外作用域,代码如下:vart=4;functionaa(){varnum1=12;函数bb(){varnum2=34;console.log(t+""+num1+""+num2);}}bb寻找变量t的过程是先在自己的内部作用域中查找,发现没有找到,然后在离bb最近的外部变量,即aa的内部作用域中查找,并还是没找到,于是在window范围内搜索,找到“usestrict”;这是什么意思?使用它有什么优点和缺点?ECMAscript5增加了第二种运行模式:“严格模式”(strictmode)。顾名思义,这种模式让Javascript在更严格的条件下运行。设置“严格模式”的目的主要有以下几点:优点:剔除Javascript语法中一些不合理、不严谨的部分,减少一些怪异的行为;剔除部分代码运行的不安全部分,保证代码运行的安全性;提高编译效率,提高运行速度;为未来的Javascript新版本铺平道路。注:经测试,IE6、7、8、9不支持严格模式。缺点:现在网站的JS会被压缩,有的文件使用严格模式,有的则没有。这时,这些原本是严格模式的文件被合并到文件中间,不仅没有表示严格模式,压缩后还浪费了字节。new运算符到底做了什么?1.创建一个空对象,this变量引用该对象,同时也继承了函数的原型。2、给this引用的对象添加属性和方法。3、新创建的对象被this引用,最后隐式返回this。varobj={};obj.__proto__=Base.prototype;Base.call(obj);在Javascript中,有一个函数在执行过程中查找对象时,永远不会查找原型。这是什么功能?hasOwnProperty()你对JSON了解多少?JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集。数据格式简单,易于读写,占用带宽少。{'age':'12','name':'back'}js懒加载的方法有哪些?什么是defer和async,DOM的动态创建(用的最多),jsajax的按需异步加载?有什么优点和缺点?优点:通过异步方式,提高了用户体验,优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了带宽占用。具有大量用户的服务器负载。Ajax最大的特点:Ajax可以实现动态不刷新(部分刷新)缺点:1.Ajax不支持浏览器后退按钮。2.安全问题AJAX暴露了与服务器交互的细节。3.对搜索引擎的支持比较弱。4.程序的异常机制被破坏。5.不易调试。如何解决跨域问题?jsonp(利用script标签的跨域能力)跨域,websocket(html5的新特性,是一种新的协议)跨域,设置代理服务器(服务器帮我们向不同来源的服务器请求数据))、CORS(跨域资源共享)、iframe跨域、postMessage(包含iframe的页面向iframe发送消息)如何模块化?立即执行函数,不暴露私有成员varmodule1=(function(){    var_count=0;    varm1=function(){      //...    };    varm2=function(){      //...    };    返回{      m1:m1,      m2:m2    };  })();异步加载有哪些方法?(1)defer,只支持IE(2)async:false,(defaultistrue);(3)创建一个脚本,插入到DOM中,加载后,callBackdocumen.write和innerHTMLdocument.write的区别只能重绘整个页面innerHTML可以重绘部分页面。.call()和.apply()的区别?例子中用add代替sub,add.call(sub,3,1)==add(3,1),所以运行结果为:alert(4);注意:js中的函数其实是一个对象,函数名是一个Function对象的引用。functionadd(a,b){alert(a+b);}functionsub(a,b){alert(a-b);}add.call(sub,3,1);Jquery和jQueryUI有什么区别?*jQuery是一个js库,提供的主要功能有选择器、属性修改和事件绑定等。*jQueryUI是在jQuery基础上设计的,利用了jQuery的可扩展性的插件。提供了一些常用的界面元素,比如对话框,拖动行为,调整大小行为等。如何在jquery中将数组转成json字符串,再转回来?jQuery没有提供这个函数,所以需要先写两个jQuery的扩展:$.fn.stringifyArray=function(array){returnJSON.stringify(array)}$.fn.parseArray=function(array){returnJSON.parse(array)}然后调用:$("").stringifyArray(array)jQuery的优化方法?Class-basedselectivity的性能相对于Id选择器来说是比较昂贵的,因为需要遍历所有的DOM元素。频繁操作的DOM在操作前应该先缓存起来。最好使用Jquery的链式调用。例如:varstr=$("a").attr("href");*for(vari=size;i