草庐IT

全局剪枝

全部标签

javascript - 我是如何丢失 JavaScript 内置对象和所有全局变量的?

我正在处理一个需要在大型浏览器(包括IE11)中运行的Umbraco站点,我遇到了一个只能在IE11上复制的奇怪问题。在某些时候,TinyMCE插件的脚本会尝试执行此代码(大约调用四次)以响应blur事件:functionclassTest(cls){returnnewRegExp("(^|\\s)"+cls+"(?:$|\\s)\\s*");}并且在尝试创建RegExp对象时抛出“对象不支持此操作”异常。cls已定义并且具有我期望的值。在未处理的异常上暂停(使用VisualStudio调试器)时,我做了一些检查。原来RegExp是undefined。我发现这非常很奇怪。更多的调查显示

javascript - 在 ES Lint 中为 React Native 应用程序将 WebSocket 定义为全局变量

我收到以下eslint错误:42:21error'WebSocket'isnotdefinedno-undef您不能从react-native导入WebSocket,因为它是全局的,但是当我将WebSocket作为全局变量添加到我的.eslintrc.yml时,它不会改变结果错误:globals:WebSocket:true如何在ESLint中为ReactNative应用将WebSocket定义为全局?这可以修复吗?目前我的.eslintrc看起来像这样:env:browser:falsees6:truecommonjs:truenode:trueextends:'airbnb'par

javascript - 如何在不弄乱全局命名空间的情况下在其他站点中注入(inject) Javascript(包括 Prototype.js)?

我目前正在做一个项目,该项目是一个使用Prototype库的大型站点,并且已经有大量的Javascript代码。我们现在正在研究一段代码,它将被“注入(inject)”到其他人的网站中(想象人们在他们的网站中添加标签),然后运行我们的代码并添加一堆DOM元素和他们网站的功能。这将有新的代码片段,并且还将重用我们在主站点上使用的大量代码。我遇到的问题是,仅仅添加一个将在人们的页面中包含Prototype的当然不是很酷。如果我们在已经使用任何框架的页面中这样做,我们肯定会搞砸一切。jQuery为我们提供了“重命名”$对象的选项,因此它可以很好地处理这种情况,但显然我们没有使用jQuery,

javascript - 局部变量的访问时间比全局变量长 7 倍?

我试图对“缓存”math.floor的增益/损失进行基准测试,希望我可以更快地进行调用。这是测试:window.onload=function(){varstartTime=newDate().getTime();vark=0;for(vari=0;iMath.floor:msvarmathfloor:mswindow.mathfloor:ms我的测试结果:[Chromium5.0.308.0]:Math.floor:49msvarmathfloor:271mswindow.mathfloor:40ms[IE8.0.6001.18702]Math.floor:703msvarmathf

javascript - 区分局部评估和全局评估

请考虑两段代码(第一段打印“Localeval”,第二段打印“Globaleval”):(functionf(){varx;try{eval("x");console.log('Localeval');}catch(e){console.log('Globaleval');}}())和varglobalEval=eval;(functionf(){varx;try{globalEval("x");console.log('Localeval');}catch(e){console.log('Globaleval');}}())事实证明,即使globalEval===eval的计算结果为

javascript - 我究竟该如何编写回调函数来更改 AJAX 中的全局变量以用于 jquery?

好的,所以我查看了很多答案,但似乎没有一个对我想要实现的目标有帮助。假设我有以下代码:varn=0;$.ajax({...success:function(data){n=Math.floor((Math.random()*10)+1);somefunction(n);}});console.log(n)//nwouldobviouslybe0again我是通过使用async:false使其同步来实现的,但据我所知,这对用户体验不利,因为它会在等待结果时卡住浏览器。在上述情况下,我究竟如何实现回调函数以允许在ajax调用后修改全局变量n? 最佳答案

javascript - 仅替换全局正则表达式的第一个匹配项

我正在编写一个函数来递归替换字符串中正则表达式的匹配项。替换可以是一个函数,就像vanilla.replace一样,这个函数可以通过它的一个参数访问原始字符串。我希望我的函数在每次迭代时只替换一个匹配项。对于非全局正则表达式,情况总是如此。但是,此函数接收的某些正则表达式将是全局的。执行传统的.replace(regex,replacement)意味着它可以在每次迭代中替换多次,不仅打乱了匹配处理的顺序,而且还传递了不正确的索引和原始字符串替换函数。举个例子:functionrecursiveReplace(string,regex,replacement){for(vari=1e8;

javascript - Jade 模板如何使用客户端全局变量?

假设我打开了一个浏览器,并在JavaScript中声明了一个全局变量。window.myGlobalVar='Hello!';然后我为使用该变量的客户端渲染编译了一个jade模板。.foo=myGobalVar我是这样编译的:jade.compile('.foo=myGobalVar',{client:true,compileDebug:false}).toString()产生这个模板函数:functionanonymous(locals){varbuf=[];varlocals_=(locals||{}),myGobalVar=locals_.myGobalVar;jade.inde

javascript - Protractor 中的全局 beforeEach 和 afterEach

在每个规范中,我都有beforeEach和afterEach语句。是否可以在全局范围内以某种方式添加它以避免规范之间的代码重复? 最佳答案 目的beforeEach()和afterEach()功能是添加重复代码块,每次开始或完成执行每个规范时都需要执行这些代码(it)。还有其他方法可以添加通用代码来避免代码重复,这里列举几种-如果您有一段代码在开始测试套件之前只需要运行一次(describe),那么您可以使用beforeAll()和afterAll()Jasmine提供的功能。如果您想要运行一段代码,并且您只想在执行开始时在所有测试

javascript - 是否可以在 hapi 中定义全局基本路径

我想要每个hapi路由路径以前缀(/api/1)开头,而不将其添加到每个路由。这可能吗?以下路径应该在路径/api/1/pets而不是/pets中可用constHapi=require('hapi');constserver=newHapi.Server();server.route({method:'GET',path:'/pets'}) 最佳答案 似乎您不能对整个应用程序进行全局操作。但是可以为插件中定义的所有路由添加前缀:server.register(require('a-plugin'),{routes:{prefix:'