131。用原生JavaScript的实现过什么功能吗? 参考答案:轮播图、手风琴、放大镜、3D动画效果等,切记,所答的一定要知道实现原理!,不知道还不如不说! 参与互动 132。javascript代码中的usestrict;是什么意思?使用它区别是什么? 参考答案:意思是使用严格模式,使用严格模式,一些不规范的语法将不再支持 参与互动 133。简述创建函数的几种方式 参考答案:第一种(函数声明):functionsum1(num1,num2){returnnum1num2;}第二种(函数表达式):varsum2function(num1,num2){returnnum1num2;}第三种(函数对象方式):varsum3newFunction(num1,num2,returnnum1num2); 参与互动 134。window。location。search()返回的是什么? 参考答案:查询(参数)部分。除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值返回值:?ver1。0idtimlq也就是问号后面的! 参与互动 135。window。location。hash返回的是什么? 参考答案:锚点,返回值:love; 参与互动 136。window。location。reload()作用? 参考答案:刷新当前页面 参与互动 137。为什么不能定义1px左右的p容器? 参考答案:IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hiddenzoom:0。08lineheight:1px 参与互动 138。BOM对象有哪些,列举window对象? 参考答案:1、window对象,是JS的最顶层对象,其他的BOM对象都是window对象的属性;2、document对象,文档对象;3、location对象,浏览器当前URL信息;4、navigator对象,浏览器本身信息;5、screen对象,客户端屏幕信息;6、history对象,浏览器访问ahrefhttps:www。q578。coml140targetblankclassinfotextkey历史a信息; 参与互动 139。简述readonly与disabled的区别 参考答案: 参与互动 140。为什么扩展javascript内置对象不是好的做法? 参考答案: 参与互动 141。什么是三元表达式?三元表示什么意思? 参考答案:三元如名字表示的三元运算符需要三个操作数。 语法是条件?结果1:结果2;。这里你把条件写在问号(?)的前面后面跟着用冒号(:)分隔的结果1和结果2。满足条件时结果1否则结果2。 参与互动 142。我们给一个dom同时绑定两个点击事件,一个用捕获,一个用冒泡,你来说下会执行几次事件,然后会先执行冒泡还是捕获 参考答案:所有事件的顺序是:其他元素捕获阶段事件本元素代码顺序事件其他元素冒泡阶段事件。 参考 参与互动 144。简述一下Handlebars的基本用法? 参考答案:没有用过的话说出它是干什么的即可 参与互动 143。简述一下Handlerbars的对模板的基本处理流程,如何编译的?如何缓存的? 参考答案: 参与互动 145。前端templating(Mustache,underscore,handlebars)是干嘛的,怎么用? 参考答案:Web模板引擎是为了使用户界面与业务数据(内容)分离而产生的,Mustache是一个logicless(轻逻辑)模板解析引擎,它的优势在于可以应用在Javascript、PHP、Python、Perl等多种编程语言中。Underscore封装了常用的JavaScript对象操作方法,用于提高开发效率。Handlebars是JavaScript一个语义模板库,通过对view和data的分离来快速构建Web模板。 参与互动 146。知道什么是webkit么?知道怎么用浏览器的各种工具来调试和debug代码么? 参考答案:Webkit是浏览器引擎,包括html渲染和js解析功能,手机浏览器的主流内核,与之相对应的引擎有Gecko(MozillaFirefox等使用)和Trident(也称MSHTML,IE使用)。对于浏览器的调试工具要熟练使用,主要是页面结构分析,后台请求信息查看,js调试工具使用,熟练使用这些工具可以快速提高解决问题的效率 参与互动 147。如何测试前端代码?知道BDD,TDD,UnitTest么?知道怎么测试你的前端工程么(mocha,sinon,jasmin,qUnit。。)? 参考答案:了解BDD行为驱动开发与TDD测试驱动开发已经单元测试相关概念 参与互动 148。JavaScript的循环语句有哪些? 参考答案:whilefordowhileforEach 参与互动 149。作用域编译期执行期以及全局局部作用域问题 参考答案:js执行主要的两个阶段:预解析和执行期 参与互动 150。如何添加html元素的事件,有几种方法?请列举 参考答案:直接在标签里添加;在元素上添加、使用事件注册函数添加 参与互动 151。列举浏览器对象模型BOM里常用的至少4个对象,并列举window对象的常用方法至少5个 参考答案: 对象:Windowdocumentlocationscreenhistorynavigator 方法:Alert()confirm()prompt()open()close() 参与互动 152。事件绑定的方式 参考答案:嵌入dombuttononclickfunc()按钮button直接绑定btn。onclickfunction(){};事件监听btn。addEventListener(click,function(){}); 参与互动 153。事件循环 参考答案:事件循环是一个单线程循环,用于监视调用堆栈并检查是否有工作即将在任务队列中完成。如果调用堆栈为空并且任务队列中有回调函数,则将回调函数出队并推送到调用堆栈中执行。 参与互动 154。事件模型 参考答案:DOM0直接绑定inputonclicksayHi()btn。onclickfunction(){}btn。onclicknullDOM2DOM2级事件可以冒泡和捕获通过addEventListener绑定通过removeEventListener解绑绑定btn。addEventListener(click,sayHi)解绑btn。removeEventListener(click,sayHi)DOM3DOM3具有更多事件类型DOM3级事件在DOM2级事件的基础上添加了更多的事件类型,全部类型如下:UI事件,当用户与页面上的元素交互时触发,如:load、scroll焦点事件,当元素获得或失去焦点时触发,如:blur、focus鼠标事件,当用户通过鼠标在页面执行操作时触发如:dbclick、mouseup滚轮事件,当使用鼠标滚轮或类似设备时触发,如:mousewheel文本事件,当在文档中输入文本时触发,如:textInput键盘事件,当用户通过键盘在页面上执行操作时触发,如:keydown、keypress合成事件,当为IME(输入法编辑器)输入字符时触发,如:compositionstart变动事件,当底层DOM结构发生变化时触发,如:DOMsubtreeModified 解析:参考 参与互动 155。如何自定义事件 参考答案: 1。原生提供了3个方法实现自定义事件2。createEvent,设置事件类型,是html事件还是鼠标事件3。initEvent初始化事件,事件名称,是否允许冒泡,是否阻止自定义事件4。dispatchEvent触发事件 MDN 参与互动 156。target和currentTarget区别 参考答案:event。target返回触发事件的元素event。currentTarget返回绑定事件的元素 参与互动 157。prototype和proto的关系是什么 参考答案: 所有的对象都拥有proto属性,它指向对象构造函数的prototype属性letobj{}obj。protoObject。prototypetruefunctionTest(){}vartestnewTest()test。protoTest。prototypetrue 所有的函数都同时拥有proto和protytpe属性函数的proto指向自己的函数实现函数的protytpe是一个对象所以函数的prototype也有proto属性指向Object。prototypefunctionfunc(){}func。prototype。protoObject。prototypetrue Object。prototype。proto指向nullObject。prototype。protonull 参与互动 158。什么是原型属性? 参考答案:从构造函数的prototype属性出发找到原型,这时候就把原型称之为构造函数的原型属性 参与互动 159。什么是原型对象? 参考答案:从实例的proto出发,找到原型,这时候就把原型称之为实例的原型对象。 参与互动 160。使用let、var和const创建变量有什么区别 参考答案: 用var声明的变量的作用域是它当前的执行上下文,它可以是嵌套的函数,也可以是声明在任何函数外的变量。let和const是块级作用域,意味着它们只能在最近的一组花括号(function、ifelse代码块或for循环中)中访问。functionfoo(){所有变量在函数中都可访问varbarbar;letbazbaz;constquxqux;console。log(bar);barconsole。log(baz);bazconsole。log(qux);qux}console。log(bar);ReferenceError:barisnotdefinedconsole。log(baz);ReferenceError:bazisnotdefinedconsole。log(qux);ReferenceError:quxisnotdefinedif(true){varbarbar;letbazbaz;constquxqux;}用var声明的变量在函数作用域上都可访问console。log(bar);barlet和const定义的变量在它们被定义的语句块之外不可访问console。log(baz);ReferenceError:bazisnotdefinedconsole。log(qux);ReferenceError:quxisnotdefined var会使变量提升,这意味着变量可以在声明之前使用。let和const不会使变量提升,提前使用会报错。console。log(foo);undefinedvarfoofoo;console。log(baz);ReferenceError:cantaccesslexicaldeclarationbazbeforeinitializationletbazbaz;console。log(bar);ReferenceError:cantaccesslexicaldeclarationbarbeforeinitializationconstbarbar; 用var重复声明不会报错,但let和const会。varfoofoo;varfoobar;console。log(foo);barletbazbaz;letbazqux;UncaughtSyntaxError:Identifierbazhasalreadybeendeclared let和const的区别在于:let允许多次赋值,而const只允许一次。这样不会报错。letfoofoo;foobar;这样会报错。constbazbaz;bazqux;