❶ Web前端新手应该注意的常见错误有哪些
今天小编要跟大家分享的文章是关于Web前端新手应该注意的常见错误有哪些?Web全栈是目前比较流行的语言,因为前端较其他语言相比,简单好学,而且现在的互联网公司几乎缺少不了Web前端开发,行业的需求致使大量的人转型前端,对于刚学前端的人来讲,他们缺乏开发经验,在项目开发中容易出错,为了使大家少走弯路,综合一批前端程序员,收集了一些最常见的错误,下面我们一起来看一看吧,希望能够对大家有所帮助。
一、JQuery选择器
在一个HTMLDOM
树中,进行一个比较复杂的元素选择,不包含某些文字的带有某某类名的元素的邻居的父元素的然后怎么做?写一个很复杂的jQuery选择器?打住。
jquery选择器原理是用正则表达式去分解你的选择器字符串(这一部分叫做Sizzle),然后再用内置的一些遍历函数如prev,next等(其实这些函数也是基于DOM提供的方法),去找到你想要的元素。
我会不去盲目地进行Sizzle的语义歧义测试,而是自己根据自己的逻辑去用prev,next等去找到自己的元素;而且退一万步来说,我也会尽量避免使用复杂的选择器(之前的方案也有提及),单位个元素用ID,多个元素用类,绝对高效准确。
二、基础数据结构与算法
现在有两个不同的JSON,比较复杂,可以参考这里的DEMO中返回的JSON。要比较它们的差异,除了用现成的工具如beyond
compare以外,如果我们的机器上没有安装这个工具,能如何较快解决?
作为一个程序员,一个个对比是不可行的,对比完也不会有什么收获。我会把之放进Excel中(如果你机器连这个都没有,那忽视我),先排序,再用二分法去快速定位找到有差异的JSON属性,即使是1024个字段的大数据,也最多10次的定位即可找到。
其实算法这东西,并不是给你一道题目然后把死记下来的内容背出来,而是当你遇到相应的情景时,能想到用这个方法去解决。
三、HTTP协议
现在很多项目中都是用ajax去提交JSON到后台了,原始的那种HTTP提交已经比较少见(至少在我的项目中是这样),但是我们也不能忘记设置form的method、action的原始提交方式,因为这个才是表单提交的原型,有助于我们理解HTTP协议,例如POST和GET的区别,理解数据是怎么样从前端到达后端的,又是怎么样从后端返回到前端。
当你理解了这个,就可以更好地跟后端进行沟通,遇到数据上的问题也能较快地定位解决。
四、javascript作用域
学过好几种的编程语言,作用域问题都是老生常谈了。在javascript中更是有函数的作用域这一基础知识。关于这个,推荐《javascript权威指南》。当时我是把中文的读去再去读英文,把英文的读完去找图解,才感觉到把这一点理解清楚的。
五、HTML/CSSDOCTYPE
曾经项目中遇到这样一个问题,用其他浏览器打开页面是好的,唯独是IE8打开时出奇地慢。我注意到IE8打开时慢但CPU消耗并不高,只是网页空白很久没渲染出来,可以排除JS算法上的问题。
经过细心研读代码发现,有人把一部分script、link等标签放到了DOCTYPE的前面。
DOCTYPE是用来告诉浏览器解释整个文档的一套法则的,一定要放在HTML部分的最前面,先有script标签,那就意味着浏览器已经开始解释了,后面再有DOCTYPE也是没有意义的了。把DOCTYPE放到HTML部分的最前面,一开始提及的问题就解决了。
以上就是小编今天为大家分享的关于Web前端新手应该注意的常见错误有哪些的文章,希望本篇文章能够对正在从事Web前端工作的小伙伴们有所帮助。想要了解更多Web前端知识记得关注北大青鸟Web培训官网。最后祝愿小伙伴们工作顺利!
❷ Web前端初学者要避免的常见错误有哪些
今天小编要跟大家分享的文章是关于Web前端初学者要避免的常见错误有哪些?相信对于刚刚接触Web前端的初学者,会遇到很多问题,在学习的过程中也会有各种各样的挫折。虽然有些错误与某一个具体的行为相关,但有些错误却是所有Web开发人员都需要面对的挑战。
今天小编为大家准备了这篇关于Web初学者常见的错误的文章,希望能够对小伙伴们有所帮助。下面来和小编一起看一看吧!
错误一:所谓“应该能行”的代码
错误:无论是JavaScript,还是在服务器上运行的代码,开发人员都需要测试并确认它是否可以正常工作,而不是在部署了之后,就认为它应该就能从一而终地运行。
影响:不经过适当错误检查的网站就是对最终用户耍流氓。不仅会极大地影响用户体验,而且其错误消息内容的类型可能会给黑客线索来渗透这个站点。
如何避免:是人都会犯错,这个哲理同样适用于编码。使用JavaScript,一定要实施好的技术来防止并抓住错误。虽然这篇文章描绘了用JavaScript编码WindoWs应用程序,但是大部分的内容也适用于Web开发,许多提示都很不错!另一种能让代码变得可靠又能在未来变化中存活下来的方法是单元测试。
如果我们够仔细,那么就能捕捉到服务器端的代码失败,而不被用户发现。只显示必要的信息,并且一定要确保设置友好的错误页面,如HTTP404s。
错误二:写分叉代码
错误:本着支持所有浏览器和版本的崇高理念,开发人员立志创建可对任意可能情况作出回应的代码。代码中if语句成堆,所有方向都有分叉。
影响:随着浏览器新版本的更新,代码文件会变得越来越笨拙和难以管理。
如何避免:实现代码的功能检测和浏览器/版本检测。功能检测技术不仅可以显着减少代码量,还更易于阅读和管理。不妨考虑使用如Modernizr这样的库,不仅有助于功能检测,还能自动帮助提供不能跟上HTML5和CSS3速度的旧版浏览器的反馈支持。
错误三:非响应式设计
错误:假设开发/设计人员在相同尺寸的显示器上开发网站。
影响:当在移动设备或在非常大的屏幕查看网站时,用户体验要么很难看到页面的重要方面,要么甚至要时刻注意着不导航至其他网页。
如何避免:响应式的思维方式。在网站中使用响应式设计。这里有一些关于这方面的实用教程,包括响应式图片,还有一个非常受欢迎的库,那就是Bootstrap。
错误四:网站过多刷新
错误:创建的网站需要为每一个互动而全面刷新页面。
影响:类似于页面臃肿,页面加载时间的性能会受到影响。用户体验缺乏流畅性,并且每次互动都可能导致网页短暂(或长时间)的复位。
如何避免:快速避免这种情况的一个方法就是,通过测定回发到服务器的内容是否是真正需要的。例如,当不依赖服务器端资源的时候,客户端脚本可用于提供直接结果。你也可以应用AJAX技术或进一步使用单页的应用程序“SPA”方法。流行的JavaScript库/框架,如JQuery、KnockoutJS和AngularJS,能让这些方法的采用变得容易得多。
错误五:做了太多的无用功
错误:开发人员花了很长的时间来创建Web内容。大量的时间花在了重复的任务上,或者自己敲代码写了很多。
影响:初始网站的发布和后续的更新时间过于冗长。如果其他开发人员也在做同样的工作,却用了更少的时间和精力,那么你的开发价值显然就低了。手动劳动很容易出现错误,而排除故障错误需要更多的时间。
如何避免:探索你的选择。在开发的每一个阶段考虑使用新的工具和新的流程技术。例如,你目前使用的代码编辑器相比SublimeText和Visual
Studio,如何?不管你使用的是什么样的代码编辑器,你最近有好好钻研它的功能吗?也许只投入稍稍一点时间去仔细阅读文档,就可以发现做事的新方法,为今后节省一个又一个小时的时间。
例如,在这篇文章中,扩展Visual
Studio可以为Web开发人员提高生产效率。不要错过网上可用的帮助工具!例如,检查在dev.modern.ie上的工具以简化测试(跨多个平台和设备)以及排除故障。
结语
通过识别这些常见的错误,Web开发人员可以避免很多让其他人饱受煎熬的挫折。我们不仅需要承认错误,还应该清楚错误的影响,并采取措施避免错误,这样才能有更好的开发表现——并有信心完成任务!
以上就是小编今天为大家分享的关于Web前端初学者要避免的常见错误有哪些的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助,想要了解更多web前端知识记得关注北大青鸟web培训官网,最后祝愿小伙伴们工作顺利,成为一名优秀的web前端工程师。
❸ 建设银行前端序列错误
浏览器设置问题,您重设置一下浏览器试试看,(点击IE浏览器的"工具菜单"-internet选项-高级选项卡-重置按键,重置完成后重启浏览器。
浏览器安全设置级别较高,插件被拦截了,您交易过程中注意浏览器上方或下方有没有弹出阻止加载项之类的,如果有您点击加载或在所有网站运行即可。
在出现问题的界面点击浏览器的“工具菜单”-“兼容性视图设置”;在弹出的窗口中点击“添加”按键,此时会把建行的网站添加进去,添加完成后点击“关闭”按键,然后刷新网页再重新登陆即可。
程序错误是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。系统程序错误是指系统程序本身有错误而造成的功能不正常、死机或中断等现象。有些系统程序错误会造成计算机安全隐患,此时叫做系统漏洞。
❹ 网页显示javascript错误..怎么解决
解决办法:
1、打开IE浏览器,在IE浏览器上方的菜单栏中找到工具项,然后选择工具项中的“Internet选项”;
❺ Web前端工程师如何处理Web前端的异常_
今天小编要跟大家分享的文章是关于Web前端工程师如何处理前端的异常。前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。下面我们就来看一看前端工程师该如何处理前端异常。一、为什么要处理异常异常是不可控的,会影响最终的呈现结果,但是我们有充分的理由去做这样的事情。
1.增强用户体验;
2.远程定位问题;
3.未雨绸缪,及早发现问题;
4.无法复线问题,尤其是移动端,机型,系统都是问题;
5.完善的前端方案,前端监控系统;
对于JS而言,我们面对的仅仅只是异常,异常的出现不会直接导致JS引擎崩溃,最多只会使当前执行的任务终止。二、需要处理哪些异常?对于前端来说,我们可做的异常捕获还真不少。总结一下,大概如下:
·___S语法错误、代码异常
·___JAX请求异常
·___蔡试醇釉匾斐
·___romise异常
·___frame异常
·___缬_cripterror
·___览:涂ǘ
下面我会针对每种具体情况来说明如何处理这些异常。三、Try-Catch的误区try-catch只能捕获到同步的运行时错误,对语法和异步错误却无能为力,捕获不到。
1.同步运行时错误:
try{
letname='jartto'
console.log(nam);
}catch(e){
console.log('捕获到异常:',e);
}
输出:
捕获到异常:ReferenceError:namisnotdefined
at:3:15
2.不能捕获到语法错误,我们修改一下代码,删掉一个单引号:
try{
letname='jartto;
console.log(nam);
}catch(e){
console.log('捕获到异常:',e);
}
输出:
UncaughtSyntaxError:Invalidorunexpectedtoken
不过语法错误在我们开发阶段就可以看到,应该不会顺利上到线上环境。
3.异步错误
try{
setTimeout(()=>{
undefined.map(v=>v);
},1000)
}catch(e){
console.log('捕获到异常:',e);
}
我们看看日志:
UncaughtTypeError:Cannotreadproperty'map'of
undefined
atsetTimeout(:3:11)
并没有捕获到异常,这是需要我们特别注意的地方。四、window.onerror不是万能的当JS运行时错误发生时,window会触发一个ErrorEvent接口的error事件,并执行window.onerror()。/**
*@param{String}message错误信息
*@param{String}source出错文件
*@param{Number}lineno行号
*@param{Number}colno列号
*@param{Object}errorError对象(对象)
*/
window.onerror=function(message,source,lineno,colno,error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}
1.首先试试同步运行时错误
window.onerror=function(message,source,lineno,colno,
error){
//message:错误信息(字符串)。
//source:发生错误的脚本URL(字符串)
//lineno:发生错误的行号(数字)
//colno:发生错误的列号(数字)
//error:Error对象(对象)
console.log('捕获到异常:',{message,source,lineno,colno,
error});
}
Jartto;
可以看到,我们捕获到了异常:
2.再试试语法错误呢?
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}
letname='Jartto
控制台打印出了这样的异常:
UncaughtSyntaxError:Invalidorunexpectedtoken
什么,竟然没有捕获到语法错误?
3.怀着忐忑的心,我们最后来试试异步运行时错误:
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}
setTimeout(()=>{
Jartto;
});
控制台输出了:
捕获到异常:{message:"Uncaught
ReferenceError:Jarttoisnotdefined",source:
"http://127.0.0.1:8001/",lineno:36,colno:5,error:
ReferenceError:Jarttoisnotdefined
atsetTimeout(http://127.0.0.1:8001/:36:5)}
4.接着,我们试试网络请求异常的情况:
我们发现,不论是静态资源异常,或者接口异常,错误都无法捕获到。
补充一点:window.onerror函数只有在返回true的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示UncaughtError:xxxxx
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
returntrue;
}
setTimeout(()=>{
Jartto;
});
控制台就不会再有这样的错误了:
UncaughtReferenceError:Jarttoisnotdefined
atsetTimeout((index):36)
需要注意:onerror最好写在所有JS脚本的前面,否则有可能捕获不到错误;onerror无法捕获语法错误;
到这里基本就清晰了:在实际的使用过程中,onerror主要是来捕获预料之外的错误,而try-catch则是用来在可预见情况下监控特定的错误,两者结合使用更加高效。
问题又来了,捕获不到静态资源加载异常怎么办?五、window.addEventListener当一项资源(如图片或脚本)加载失败,加载资源的元素会触发一个Event接口的error事件,并执行该元素上的onerror()处理函数。这些error事件不会向上冒泡到window,不过(至少在Firefox中)能被单一的window.addEventListener捕获。
window.addEventListener('error',(error)=>{
console.log('捕获到异常:',error);
},true)
控制台输出:
SHAPE*MERGEFORMAT
由于网络请求异常不会事件冒泡,因此必须在捕获阶段将其捕捉到才行,但是这种方式虽然可以捕捉到网络请求的异常,但是无法判断HTTP的状态是404还是其他比如500等等,所以还需要配合服务端日志才进行排查分析才可以。
需要注意:
·___煌榔飨路祷氐_rror对象可能不同,需要注意兼容处理。
·___枰⒁獗苊_ddEventListener重复监听。六、PromiseCatch在promise中使用catch可以非常方便的捕获到异步error,这个很简单。
没有写catch的Promise中抛出的错误无法被onerror或try-catch捕获到,所以我们务必要在Promise中不要忘记写catch处理抛出的异常。
解决方案:为了防止有漏掉的Promise异常,建议在全局增加一个对unhandledrejection的监听,用来全局监听UncaughtPromiseError。使用方式:
window.addEventListener("unhandledrejection",
function(e){
console.log(e);
});
我们继续来尝试一下:
window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕获到异常:',e);
returntrue;
});
Promise.reject('promiseerror');
可以看到如下输出:
那如果对Promise不进行catch呢?
window.addEventListener("unhandledrejection",
function(e){
e.preventDefault()
console.log('捕获到异常:',e);
returntrue;
});
ewPromise((resolve,reject)=>{
reject('jartto:promiseerror');
});
嗯,事实证明,也是会被正常捕获到的。
所以,正如我们上面所说,为了防止有漏掉的Promise异常,建议在全局增加一个对unhandledrejection的监听,用来全局监听UncaughtPromiseError。
补充一点:如果去掉控制台的异常显示,需要加上:
event.preventDefault();七、VUEerrorHandlerVue.config.errorHandler=(err,vm,info)=>{
console.error('通过vue
errorHandler捕获的错误');
console.error(err);
console.error(vm);
console.error(info);
}八、React异常捕获React16提供了一个内置函数componentDidCatch,使用它可以非常简单的获取到react下的错误信息
componentDidCatch(error,info){
console.log(error,info);
}
除此之外,我们可以了解一下:errorboundaryUI的某部分引起的JS错误不应该破坏整个程序,为了帮React的使用者解决这个问题,React16介绍了一种关于错误边界(errorboundary)的新观念。
需要注意的是:errorboundaries并不会捕捉下面这些错误。
1.事件处理器2.异步代码3.服务端的渲染代码4.在errorboundaries区域内的错误
我们来举一个小例子,在下面这个componentDIdCatch(error,info)里的类会变成一个errorboundary:
.Component{
constructor(props){
super(props);
this.state={hasError:false};
}
componentDidCatch(error,info){
//DisplayfallbackUI
this.setState({hasError:true});
//
logErrorToMyService(error,info);
}
render(){
if(this.state.hasError){
//
returnSomethingwentwrong.
;
}
returnthis.props.children;
}
}
然后我们像使用普通组件那样使用它:
componentDidCatch()方法像JS的catch{}模块一样工作,但是对于组件,只有class类型的组件(classcomponent)可以成为一个errorboundaries。
实际上,大多数情况下我们可以在整个程序中定义一个errorboundary组件,之后就可以一直使用它了!九、iframe异常对于iframe的异常捕获,我们还得借力window.onerror:
window.onerror=function(message,source,lineno,colno,
error){
console.log('捕获到异常:',{message,source,lineno,colno,error});
}
一个简单的例子可能如下:
frameborder="0">
十、Scripterror一般情况,如果出现Scripterror这样的错误,基本上可以确定是出现了跨域问题。这时候,是不会有其他太多辅助信息的,但是解决思路无非如下:
跨源资源共享机制(CORS):我们为script标签添加crossOrigin属性。
或者动态去添加js脚本:
constscript=document.createElement('script');
script.crossOrigin='anonymous'
script.src=url;
document.body.appendChild(script);
特别注意,服务器端需要设置:Access-Control-Allow-Origin
此外,我们也可以试试这个-解决ScriptError的另类思路:
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
简单解释一下:
·___男戳_ventTarget的addEventListener方法;
·___源氲_istener进行包装,返回包装过的listener,对其执行进行try-catch;
·___榔鞑换岫_ry-catch起来的异常进行跨域拦截,所以catch到的时候,是有堆栈信息的;
·___匦_hrow出来异常的时候,执行的是同域代码,所以window.onerror捕获的时候不会丢失堆栈信息;
利用包装addEventListener,我们还可以达到“扩展堆栈”的效果:
(()=>{
constoriginAddEventListener=EventTarget.prototype.addEventListener;
EventTarget.prototype.addEventListener=function(type,listener,options){
+//捕获添加事件时的堆栈
+constaddStack=newError(`Event(${type})`).stack;
constwrappedListener=function(...args){
try{
returnlistener.apply(this,args);
}
catch(err){
+//异常发生时,扩展堆栈
+err.stack+='
'+addStack;
throwerr;
}
}
returnoriginAddEventListener.call(this,type,wrappedListener,options);
}
})();十一、崩溃和卡顿卡顿也就是网页暂时响应比较慢,JS可能无法及时执行。但崩溃就不一样了,网页都崩溃了,JS都不运行了,还有什么办法可以监控网页的崩溃,并将网页崩溃上报呢?
崩溃和卡顿也是不可忽视的,也许会导致你的用户流失。
1.利用window对象的load和beforeunload事件实现了网页崩溃的监控。不错的文章,推荐阅读:Logging
InformationonBrowserCrashes。window.addEventListener('load',function(){
sessionSt
❻ 前端错误Uncaught TypeError: Cannot read property 'length' of null错误怎么处理
通过统计数据库中的1000多个项目,我们发现在 JavaScript 中最常出现的错误有10个。下面会向大家介绍这些错误发生的原因以及如何防止。
1. Uncaught TypeError: Cannot Read Property
这是 JavaScript 开发人员最常遇到的错误。当你读取一个属性或调用一个未定义对象的方法时,Chrome 中就会报出这样的错误。
导致这个错误发生的原因有很多,常见的一种情况是在渲染 UI 组件时,不正确地初始化状态。我们来看一个真实的应用程序中发生这种情况的例子。
以上代码有两个重要方面:
一是组件的状态(例如 this.state),在开始生命周期之前是 undefined 状态。
二是当通过异步的方式获取数据时,无论是在构造函数中 componentWillMount 中,还是在构造函数中提取 componentDidMount,组件在数据加载之前至少会渲染一次。当检测首次渲染时,会发现 this.state.items 是未定义的。此时就会出现一个错误 -“Uncaught TypeError: Cannot read property ‘map’ of undefined" in the consol”。
解决的方法很简单:在构造函数中使用合理的默认值进行状态初始化。
2. TypeError: ‘undefined’ Is Not an Object (evaluating...)
这是在 Safari 中读取属性或调用未定义对象上的方法时发生的错误,这与 Chrome 的上述错误基本相同,只是 Safari 使用不同的错误消息。
3. TypeError: Null Is Not an Object (evaluating...)
这是在 Safari 中读取属性或调用空对象上的方法时发生的错误。
在实际情况中,导致这种错误的原因之一是:在元素加载之前,就尝试在 JavaScript 中使用 DOM 元素。这是因为 DOM API 对于空白的对象引用返回 null。
任何执行和处理 DOM 元素的 JS 代码,都应该在创建 DOM 元素之后执行。JS 代码按照 HTML 中的规定自上而下进行解释。因此,如果在 DOM 元素之前存在标签,则脚本标签内的 JS 代码就会在浏览器分析 HTML 页面时执行。如果在加载脚本之前尚未创建 DOM 元素,就会出现这样的错误。
在这个例子中,我们可以通过添加一个事件侦听器来解决这个问题,事件侦听器会在页面准备就绪时通知我们。一旦 addEventListener 被触发,该 init( ) 方法就可以使用 DOM 元素。
4. (unknown): Script Error
当未捕获的 JavaScript 错误违背跨边界原则时,就会发生脚本错误。例如,如果将 JavaScript 代码托管在 CDN 上,则任何未被捕获的错误(通过 window.onerror 处理程序发出的错误,而不是 try-catch 中捕获到的错误)将仅报告为“脚本错误”。这是浏览器的一种安全措施,主要用于防止跨域传递数据的情况出现。
要获取真实的错误消息,需要执行以下操作:
Access-Control-Allow-Origin
将
Access-Control-Allow-Origin 设置为 *, 表示可以从任何域正确访问资源。* 如有必要,也可以用自己的域名进行替换,例如:
Access-Control-Allow-Origin: www.example.com。
以下是在各种环境中设置的一些示例:
在脚本标签上设置crossorigin =“anonymous”
在你的 HTML 源代码中,为每一个脚本设置
Access-Control-Allow-Origin,在设置 SCRIPT 标签中,设置 crossorigin="anonymous"。在将 crossorigin 属性添加到脚本标签之前,请确保正在向脚本文件发送 header。在 Firefox 中,如果 crossorigin 属性存在但 Access-Control-Allow-Origin 标题不存在,则脚本不会执行。
5. TypeError: Object Doesn’t Support Property
当调用未定义的方法时,IE 中会发生这样的错误。
这相当于 Chrome 中的 “undefined’ is not a function” 错误。对于相同的逻辑错误,不同的浏览器可能会有不同的错误消息。
这是在 IE 的 Web 应用程序中使用 JavaScript 命名空间出现的一个常见问题。出现这种情况的绝大部分原因是IE无法将当前名称空间内的方法绑定到this关键字。例如,如果你有 JS Rollbar 方法的命名空间 isAwesome。通常,如果位于 Rollbar 命名空间内,则可以使用以下语法调用该 isAwesome 方法:
6. TypeError: ‘undefined’ Is Not a Function
当调用未定义的函数时,Chrome 中就会发生这样的错误。
执行上面的代码会导致以下错误:“Uncaught TypeError: undefined is not a function。” 发生以上错误的原因是,当你调用 setTimeout( ) 时,实际上是在调用 window.setTimeout( ),传递给 setTimeout( ) 的匿名函数是在窗口对象的上下文中定义的,而该窗口对象没有 clearBoard( ) 方法。
符合旧版浏览器的解决方案是以变量的方式简单地将引用保存在 this 中,然后通过闭包继承。
❼ Web前端工程师要知道的常见错误
今天小编要跟大家分享的文章是关于Web前端工程师要知道的常见错误。熟悉web前端开发工作的小伙伴们都知道web开发中会有很多错误的做法,以及如何避免这些错误。帮助你在开发工作中,轻松避开那些不必要的坑!下面来和小编一起看一看吧!
一、写一些过时的HTML
错误:早期的互联网比起我们现在,标记的选择要少得多。然而,旧习难改,现在很多开发人员写的HTML就好像还身处20世纪一样。举例来说,我们使用