浅谈JavaScript 命名空间

Javascript只有函数作用域,什么块儿啊、神马文件啊统统都认为是一个命名空间的,有时候因为一些重名问题导致的错误让人莫名其妙,难以调试解决。在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子:varsayHello=function(){return'Hellovar';};functionsayHello(name){return'Hellofunction';};sayHello();最终结果为>"Hellovar"  再来几个例子<inputtype="button"value="test"onclick="alert();"/><scripttype="text/javascript">functionalert(){//.......test2();//.......}functiontest2(){alert('test2')}在个例子在不同的浏览器下有不同表现,IE会报Stackoverflow,Firefox会死掉。。。反正都会报错,很简单的错误,...

React和Vue等框架什么时候操作DOM

虽然网上都在将,React和Vue等框架尽量减少直接的DOM操作,但还有有些情况,必须直接操作 ...

浅谈JS之常问问题:setInterval和setTimeout调用函数为什么不加小括号()???

1、问题描述:  setInterval的函数调用问题,很多新手在写函数时,遇到了js函数加()和不加()的相关问题  2、定时器缘由与调度权  定时器来源:有时我们并不想立即执行一个函数,而是等待特定一段时间之后再执行,这种做法也叫“计划调用”。      所以使用定时器时,调度权没有在我们自己手里,而是定时器自己去间隔调用的。而定时器是结合函数引用进行调度的,而不是函数执行结果     3、重点:记住一句话加括号为调用该函数,返回值为函数返回值。而定时器是结合函数引用进行调度的,并不是函数的执行返回结果 4、其他解释  在使用setInterval()函数时,使用函数有两种方式functiontest001(){alert('这是一个函数');}  ①使用已经定义好的函数,这时候要注意:我们是把已经定义的好的函数名给方法就可以了,并不是调用这个函数  因为调用这个动作并不是我们来完成的,是setInterval来完成的,它会根据当前的时间自动调用当前函数.setInterval(test001,10...

为什么用Object.prototype.toString.call(obj)检测对象类型?

转自https://www.cnblogs.com/youhong/p/6209054.html最近做了做一些js面试25EssentialJavaScriptInterviewQuestions*,其中第一道是:使用typeofbar==="object"检测”bar”是否为对象有什么缺点?如何避免?这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的,null 的结果也是object,数组的结果也是object,有时候我们需要的是"纯粹"的object对象。如何避免呢?比较好的方式是:console.log(Object.prototype.toString.call(obj)==="[objectObject]");使用以上方式可以很好的区分各种类型:(无法区分自定义对象类型,自定义类型可以采用instanceof区分)console.log(Object.prototype.toString.call("jerry"));//[objectString]console.log(Object.pr...

后缀.msc文件是什么?

(1).MSC 文件?该文件是由微软公司开发的。贴有此扩展名的文件也被称为微软保存的控制台文件。Microsoft管理控制台允许用户自定义控制台或模块来保存管理单元。它是用来配置和监视Windows的计算机系统。该单元中包含一个程序,它提供类似的设备管理,系统监控和磁盘碎片整理的其他行政管理工作。管理单元可以容纳额外的管理单元扩展。用户可以创建和自定义的MSC文件通过电子邮件,网络共享或网络发布发布的工具或实用程序的集合给其他用户。它也可以被分配到其他网络,用户和组策略设置。系统管理员可以通过提供定制化的限制。万一MMC无法完成正常关机,则SMS.MSC文件可以被从系统中删除。在海安格式的文件可以打开使用MicrosoftWindowsServer的MicrosoftWindows平台。通俗理解:系统配置实用程序有关于电脑启动时、运行时的服务、后台程序的设置 (2)如何打开 .MSC 文件?推出.msc文件,或者你的电脑上的任何其他文件,双击它。如果你的文件关联的设置是否正确,这意味着应用程序来打开你的.msc文件将其打开。这是可能的,你可能需要...
代码星球 代码星球·2020-04-08

package.json中的script选项作用

npm不仅可以用于模块管理,还可以用于执行脚本。package.json文件有一个scripts字段,可以用于指定脚本命令,供npm直接调用。    接下来做个简单测试:(1)在项目根目录下创建demo.js   接下来运行demo.js,直接运行如下  那如果将其放到script里,可以通过npmrun指令来运行 (2)通过npmrun指令运行首先将其放入script字段   接下来执行npmrundemo   (3)npmtest与npmstart指令快捷操作,我们可以随意自定义,那向我们常见的test与start只是自定义中的一个,与其他有稍微不同之处便是start和test属于特殊命令,可以省略run。  具体官方文档说明如下,原因:规定...文档说明:npm内置了两个命令简写,npmtest等同于执行npmruntest,npmstart等同于执行npmrunstart。  &n...

JavaScript阻止冒泡事件

事件兼容event=event?event:window.event;js停止冒泡·window.event?window.event.cancelBubble=true:event.stopPropagation();js阻止默认行为window.event?window.event.returnValue=false:event.preventDefault();...

什么是数据可视化

一个好的可视化,能够带给人们不仅仅是视觉上的冲击,还能够揭示蕴含在数据中的规律和道理。下面就总结一下可视化的基础概念。 【可视化的意义】可视化的终极目标是洞悉蕴含在数据中的现象和规律,这里面有多重含义:发现、决策、解释、分析、探索和学习。简明定义是:通过可视表达增强人们完成某些任务的效率可以化的意义在于,可视化作为人脑的辅助工具,可以替我们保留一部分信息,好记性不如烂笔头。其次,图形化的符号可以将用户的注意力引导到重要的目标。  【可视化的目标和作用】传统的可视化可以大致分为探索性可视化和解释性可视化,按照应用来分,可视化有多个目标:有效呈现重要特征揭示客观规律辅助理解事物概念和过程对模拟和测量进行质量监控提高科研开发效率促进沟通交流和合作按照宏观的角度看,可视化的三个功能:信息记录信息推理和分析信息传播与协同  【数据可视化分类】数据可视化包含三个分支,科学可视化(SciVis,ScientificVisualization)和信息可视化(InfoVis,InformationVisualization),以及后来演化出第三个分支:可...
代码星球 代码星球·2020-04-08

swiper在vue项目中的循环轮播bug以及点击事件

一般的,如果是静态数据(本地数据),可以直接在mounted生命周期中初始化,循环轮播、自动播放都比较正常。  但是,如果是动态从后台获取数据的话,采用上述方法会发现,轮播图无法自动播放,也无法拖拽。  解决办法:在从后台获取完数据之后再初始化swiper,同时启动动态检查器observer,当改变swiper的样式(例如隐藏/显示)或者修改swiper的子元素时,自动初始化swiper,默认是false。这时候使用autoplay开启自动播放是可以的,   然而当加上loop让其循环播放时,会发现是有问题的。如果不要循环播放的话,上述方法勉强可行,但是如果想要自动播放与循环轮播同时生效的话,还得另寻他法。  解决方法:在获取完数据后,将swiper放在$nextTick下一个UI帧再初始化。this.$nextTick(()=>{//下一个UI帧再初始化swiperthis.initSwiper();});   然后在initSwiper方法中,完成swiper初始化,如:initSwiper(){const_this=thisvarmySwiper=new...

Vue工程化入口文件main.js中Vue.config.productionTip = false含义

阻止启动生产消息,常用作指令。通俗理解为消息提示的环境配置。阻止启动生产消息這又是什麽意思?看下效果(1)Vue.config.productionTip=false  (2)Vue.config.productionTip=true感覺多了一行信息  小结:开发环境下,Vue会提供很多警告来帮你对付常见的错误与陷阱。而在生产环境下,这些警告语句却没有用,反而会增加应用的体积。此外,有些警告检查还有一些小的运行时开销,这在生产环境模式下是可以避免的。(摘于官网说明)大概意思应该就是,消息提示的环境配置,设置为开发环境或者生产环境    ....

JavaScript显式类型转换与隐式类型转换

 隐式类型转换四则运算判断语句toString在JavaScript中声明变量不需指定类型,对变量赋值也没有类型检查,同时还允许隐式类型转换。这些特征说明JavaScript属于弱类型的语言。在强类型的C++中,多数情况下构造函数需要声明为 explicit 来禁止隐式类型转换,避免误用(见Item15:资源管理类需要提供对原始资源的访问)。弱类型的JavaScript中没有这一机制,比如下面的代码://弹出对话框中输入1vara=prompt('inputanumber');varb=a+1;console.log(b);//控制台输出11目前JavaScript还无法阻止 a 被隐式转换为字符串。本文便来总结一下JavaScript的类型转换行为,以及隐式类型转换的规则。转换为字符串是应用程序中的常见操作,几乎所有语言都提供了将任何类型转换为字符串的通用接口。比如Java和C#的toString方法、C++的函数std::to_string,当然还有JavaScript的toString方法。多数的JavaScript宿主环境(比如...

JavaScript 中 apply 、call 的详解

ECMAScript规范给所有函数都定义了call与apply两个方法,它们的应用非常广泛,它们的作用也是一模一样,只是传参的形式有区别而已。apply()apply方法传入两个参数:一个是作为函数上下文的对象,另外一个是作为函数参数所组成的数组。varobj={name:'linxin'}functionfunc(firstName,lastName){console.log(firstName+''+this.name+''+lastName);}func.apply(obj,['A','B']);//AlinxinB可以看到,obj是作为函数上下文的对象,函数func中this指向了obj这个对象。参数A和B是放在数组中传入func函数,分别对应func参数的列表元素。call()call方法第一个参数也是作为函数上下文的对象,但是后面传入的是一个参数列表,而不是单个数组。varobj={name:'linxin'}functionfunc(firstName,lastName){console.log(firstName+''+this.name+''+lastName);}f...
代码星球 代码星球·2020-04-08

JS高阶---为什么说JS是单线程执行的???

大纲:  【主体】(1)如何证明JS运行是单线程的?上述代码执行顺序结果为:fn()→timeout1111→timeout2222接下来对上述代码做下修改执行结果如右图所示接下来点击确认,关闭弹框,再往后1s执行timeoout1111,再过1s执行timeout2222从这里可以看出,alert暂停了计时,点击确定后才会恢复程序执行和计时  最后总结如下    (2)为什么JS是单线程模式?             ....

什么是闭包,闭包造成的内存泄露如何解决

什么是闭包?能够访问其他函数内部变量的函数闭包解决了什么问题由于变量的作用域的原因-----(函数内部能读取全局变量,函数外部无法读取函数内部的变量【局部变量】),为了在函数外部读取局部变量,所以就有了闭包。闭包的作用1.访问其他函数内部变量2.保护变量不被内存回收机制回收3.避免全局变量被污染方便调用上下文的局部变量加强封装性闭包的缺点闭包长期占用内存,内存消耗很大,可能导致内存泄露闭包示例代码functionouter(){varm=2;functioninner(){console.log(m)}returninner;}letfunc=outer();func()//打印2  注意事项,如若操作不当,可能会导致内存泄漏。什么是内存泄漏首先,需要了解浏览器自身的内存回收机制。每个浏览器会有自己的一套回收机制,当分配出去的内存不使用的时候便会回收;内存泄露的根本原因就是你的代码中分配了一些‘顽固的’内存,浏览器无法进行回收,如果这些’顽固的’内存还在一直不停地分配就会导致后面所用内存不足,造成泄露。闭包造成内存泄漏...

Vue中swiper手动滑动后不能自动播放的解决方法

用户操作swiper之后,是否禁止autoplay。默认为true:停止。如果设置为false,用户操作swiper之后自动切换不会停止,每次都会重新启动autoplay。操作包括触碰,拖动,点击pagination等。 Swiper3.x<script>varmySwiper=newSwiper('.swiper-container',{autoplay:3000,autoplayDisableOnInteraction:false,//用户操作swiper之后,是否禁止autoplay})</script>   ....
首页上一页...377378379380381...下一页尾页