草庐IT

javascript - 省略分号会影响 JavaScript 的性能吗?

我正在与一位同事讨论JavaScript,同时查看一些片段。我们注意到这些片段在语句末尾缺少;。我们都知道,即​​使行尾没有显示分号,JS也会被正确解释,但我想知道这是否会以某种方式影响评估的性能,因为它是一种解释型语言。 最佳答案 带有空格、分号和注释的javascript文件比较重。这是主要影响。但是你是一名编码员,你必须维护代码,所以这种非常轻微的影响远不如对可读性的不利影响重要。省略分号意味着您知道什么时候可以省略它们。但规则并不是那么简单,学习它们不值得花时间。将分号保留在原处,您将避免错误。如果您想拥有尽可能轻的代码,则

javascript - OS X 滚动条样式更改时是否会触发浏览器事件?

OSXLion及更高版本允许用户打开/关闭iOS风格的float滚动条-通过系统偏好设置手动或插入鼠标。基于WebKit的浏览器(也许还有Opera?)会立即切换它们的滚动条样式-发生这种情况时是否会触发一个事件?(仅WebKit就可以)一些注意事项:当用户切换滚动条样式时,OSX会触发NSPreferredScrollerStyleDidChangeNotificationWebKit似乎没有订阅此事件(grep时没有命中)。我怀疑WebKit正在通过NSViewBoundsDidChangeNotification事件处理此问题(我假设该事件会为ScrollView的内容View触

javascript - Chrome JavaScript CPU 分析器做了什么可能会影响程序的性能(在分析期间)?

我最近设法在我的脚本中引入了一个错误,导致物理帧速率时不时地从100fps下降到10fps(这是一个物理模拟类型的应用程序)。我已经尝试查找原因很长时间了,并且偶然发现了一个奇怪的现象:当帧速率下降到10fps时,如果我运行Chrome的CPU分析器,它会跳回100fps,并保持在那里即使在我停止分析器之后。所以我一直在研究探查器,它似乎在运行时禁用了条件断点——这提高了性能。在确保删除所有断点、清除缓存并重新启动chrome进程后,我确定断点与它无关。所以我想知道的是:在分析器运行时,chrome是否会做任何其他可能影响(尤其是提高)我的应用程序性能的事情?我想让这个问题保持笼统,这

javascript - 测试 React 中的点击事件是否会更新 HTML

我已经对使用Mocha显示表格的React组件进行了一些测试。我可以断言它的初始状态,但我有一个点击事件,它对我想要测试的数据进行排序。如果我使用React.addons.TestUtils.Simulate.click(theComponent)来尝试测试排序。我可以看到事件已处理,状态改变被触发在调用setState之前对数据进行排序但是当我对组件进行断言时,什么都没有改变。it('sortsthedatawhentheyearheaderisclicked',function(){varReact=require('react/addons');varTestUtils=Reac

javascript - 在 Chrome 的 Worker 中使用 `console.log` 会打印两次相同的消息

与标题差不多。更奇怪的是,这只会在您在新选项卡中运行程序时发生,如果您只是刷新页面,每个console.log只会有一条消息。这是main.js:constworker=newWorker('worker.js');这是worker.js:console.log('Foobar!');这是index.html:WebWorkersFirefox不会发生同样的情况。我使用的是Chrome版本65,更奇怪的是,重复的消息似乎不属于“上下文”下拉列表中列出的任何上下文,因此当我尝试过滤除worker.js发送的消息之外的所有控制台消息时,列出的唯一消息是第一条消息,第二条消息(副本)似乎不属

javascript - 这个for循环会迭代多次吗?

我一直在和同事讨论一些代码:for(constaofarr){if(a.thing)continue;//doathing}一个建议是过滤它并使用forEacharr.filter(a=>!a.thing).forEach(a=>/*doathing*/);有一个关于重复不必要的讨论。我查过这个,我找不到任何东西。我也试图弄清楚如何查看优化后的输出,但我也不知道该怎么做。我希望filter和forEach变成非常类似于forof和continue,但我不知道如何确定。我怎样才能知道?到目前为止,我唯一尝试过的是谷歌。 最佳答案 您的

javascript - (function eval () {}) 如果函数体处于严格模式会抛出语法错误?

为什么这段代码会抛出错误?//globalnon-strictcode(functioneval(){'usestrict';});现场演示:http://jsfiddle.net/SE3eX/1/所以,我们这里有一个命名函数表达式。我想明确指出这个函数表达式出现在非严格代码中。如您所见,它的函数体是严格的代码。严格模式规则在这里:http://ecma-international.org/ecma-262/5.1/#sec-C相关项目符号是这个(它是列表中的最后一个):ItisaSyntaxErrortousewithinstrictmodecodetheidentifierseva

javascript - JavaScript 构造函数中的 "var"变量会发生什么?

例子:functionFoo(){this.bla=1;varblabla=10;blablabla=100;this.getBlabla=function(){returnblabla;//exposesblablaoutside}}foo=newFoo();原始问题:我知道bla将被分配给Foo的每个实例。blabla会发生什么?新问题:我现在的理解:this.bla=1;//willbecomeanattributeofeveryinstanceofFOO.varblabla=10;//willbecomealocalvariableofFoo(**not**anattribut

javascript - 为什么 JavaScript Arguments 对象会因赋值给参数而发生变化?

这种行为背后的基本原理是什么?functionf(x){console.log(arguments[0]);x=42;console.log(arguments[0]);}f(1);//=>1//=>42也许这是一个真正的错误。ECMAScript规范的哪一部分定义了这种行为? 最佳答案 实际上,在严格模式下,这不会发生为youcanseehere.如果您阅读ECMAStandard的第10.6节,特别是注释1,您会看到:Fornon-strictmodefunctionsthearrayindex(definedin15.4)na

javascript - 从键盘上的字段中获取文本,但会延迟进一步输入

我有一个表单,当各种元素发生变化时,它会远程提交。特别是在搜索字段上,我使用keyup来检测字段中的文本何时更改。这样做的问题是,当有人输入“chicken”时,表单会被提交七次,只计算最后一次。最好是这样的检测到键盘输入-开始等待(一秒钟)检测到另一个keyup-重启等待时间等待完成-获取值并提交表单在我开始编写我自己的版本之前(我真的是一个只有一点点js的后端人员,我对所有东西都使用jQuery),是否已经有一个现有的解决方案?这似乎是一个普遍的要求。也许是一个jQuery插件?如果没有,最简单和最好的编码方式是什么?更新-为Dan添加的当前代码(下方)Dan-这可能是相关的。我在