草庐IT

javascript - 在 Grunt 中使用全局变量设置构建输出路径

我有几个繁重的任务,我试图在这些任务之间共享全局变量,但我遇到了问题。我已经编写了一些自定义任务,这些任务根据构建类型设置正确的输出路径。这似乎设置正确。//SetMode(localorbuild)grunt.registerTask("setBuildType","Setthebuildtype.Eitherbuildorlocal",function(val){//grunt.log.writeln(val+":setBuildTypeval");global.buildType=val;});//SetOutputlocationgrunt.registerTask("setO

JavaScript - 检查是否在全局上下文中

当函数附加到对象并被调用时:functionf(){returnthis.x;}varo={x:20};o.func=f;o.func();//evaluatesto20this指的是函数被调用为方法的对象。这相当于执行f.call(o)。当函数不是作为对象的一部分被调用时,this指的是全局对象。如何检查是否从非对象上下文调用函数?是否有任何标准关键字来访问全局对象?这样做的唯一方法是这样吗?globalobj=this;functionf(){if(this==globalobj)doSomething();}注意:我在这里没有特别的用例-我实际上是在问这个确切的机制。

javascript - 为什么要将窗口对象传递给模块模式?

这是一个自执行的匿名方法。将窗口作为全局传递似乎是一种很好的做法。如果窗口已经随处可用,为什么要这样做?(function(global){/*mycode*/global["someName"]=someObject;})(window); 最佳答案 它跳过了必须进行范围查找的代码,因为global是在函数内部定义的。编辑——这是一种性能优化。javascript中的作用域仅限于函数作用域。global在这种情况下是在该范围内定义的,因此当代码命中global[...]时,它会查看它的直接范围(在函数内)并找到global马上。否

javascript - 帮助理解 javascript 全局消减技术

来自DailyJS"Let'sbuildaJavaScriptFramework"我不太确定以下代码,显然用作全局减排技术。到目前为止,我的理解还停留在(function(){})上。我了解设置turingvar,将global.turing设置为turing,并返回window或this(如果不在浏览器中),但是(function(global){})(thisorwindow)事情让我感到困惑......我见过类似的事情varmything={}并将所有代码设置在神话之下,但这个成语让我有点困惑。我真的很想了解这里的推理而不是记住它“有效”(function(global){var

javascript - 为什么此代码有效 : "(1,eval)(' this')"

为什么下一个代码是有效的Javascript代码?varglobal=(1,eval)('this');alert(global); 最佳答案 那是因为commaoperator返回它的第二个操作数(并计算两者)。您问题中的代码相当于:1;varglobal=eval('this');alert(global); 关于javascript-为什么此代码有效:"(1,eval)('this')",我们在StackOverflow上找到一个类似的问题: https

javascript - Javascript 中的变量范围(提升)

我的一个friend正在做一个在线测验,他问了我这个问题,我无法回答。varglobal=false;functiontest(){global=true;returnfalse;functionglobal(){}}console.log(global);//saysfalse(Asexpected)test();console.log(global);//saysfalse(Unexpected:shouldbetrue)如果我们假设函数与var变量一起被提升到顶部,让我们试试这个。varfoo=1;functionbar(){returnfoo;foo=10;functionfo

javascript - JS 恢复默认/全局函数

这是一个假设性的问题,它确实没有实际用途,但是......假设您要执行以下操作:document.open=null;如何将document.open恢复到其原始功能,这可能吗(没有用户创建的临时存储)?document.open是否以鲜为人知的名称存储在另一个位置?谢谢!:) 最佳答案 覆盖document.open直接在document对象上创建一个名为open的变量/函数。但是,原始函数不在对象本身上,而是在其原型(prototype)上-因此您确实可以恢复它。open函数来自HTMLDocument.prototype,因此

javascript - 为什么 'event' 在 Chrome 中全局可用但在 Firefox 中不可用?

在回答另一个问题时,出现了一个奇怪的错误,该错误与event对象在匿名函数中可用而不被传入有关。在Chrome中,下面的工作正常,但Firefox抛出一个错误。$(document).ready(function(){$("#uspsSideboxTrackingClose").click(function(){event.preventDefault();console.log(event);});});Chrome:火狐:ReferenceError:eventisnotdefined众所周知$("#uspsSideboxTrackingClose").click(function

javascript - JS : React and global namespace pollution

我正在考虑在一个新网站中使用React,但我仍然想知道如何使用React组件处理全局命名空间。例如,如果我像这样定义几个React组件:varMySlider=React.createClass({//snip});varMyAlert=React.createClass({//snip});varMyDropdown=React.createClass({//snip});渲染一个组件看起来像这样:React.renderComponent(,document.getElementById('content'));但是,我更愿意为我的组件命名空间以避免污染全局命名空间。varName

javascript "use strict"和尼克的查找全局函数

所以我看到了一个函数,坦率地说,它的简单性非常漂亮,因为它允许您在匿名函数中找到全局对象(这取决于当时的环境,可能不是window);但是,当您抛出javascripts的“使用严格”时;由于对关键字“this”的评估发生变化,模式崩溃了。有几种方法可以做到这一点?(function(){varwin=function(){return(function(){returnthis;}());};//winnowpointstotheglobalobjectnomatterwhereitiscalled.}());现在,如果在“usestrict”的上下文中调用这些,我们将失去所描述的功