草庐IT

screeninfo_var

全部标签

Javascript:不使用 var 关键字时有两个输出

GoogleChrome和Firebug为我提供了这个示例的两个不同输出。如果b是全局的,那么第一个应该给我undefined第二个14。对吗?但在Firebug中,它给出了两个14,而Chrome给出了引用错误。functiona(){b=14;}console.log(b);a();console.log(b); 最佳答案 不要使用浏览器控制台进行范围实验。不同的浏览器控制台以不同的方式运行您的代码。如果您在正常环境中完全按照引用的方式运行该代码,正确的是您将从第一个console.log(b)中得到一个ReferenceErr

javascript - typeof var 显示预期的数字类型后出现意外的 NaN 输出

在EloquentJavascript第4章的练习中得到了一个意想不到的NaN,但这个错误还不够明显,我没有注意到它。有人介意看一下并指出我的错误吗?/*Writearangefunctionthattakestwoarguments,startandend,andreturnsanarraycontainingallthenumbersfromstartupto(andincluding)end.*/varnumRng=[];functionrange(start,end){//varnumRng=[];cntr=(end-start);for(i=0;i这里是Firebug输出,在

javascript - 为什么在 JavaScript 的 if() 表达式中使用 var 是非法的?

至少在V8中是这样的if((vari=x*x)==2){}将给出有关意外“var”关键字的错误。但是,如果var发生在if()之前,则没有错误,但我仍然在表达式中保留i的赋值。为什么会有这么奇怪的异常(exception)?这是在某处的ECMA脚本标准中吗?在if()表达式的求值过程中是否发生了无法检测到的闭包,因此留在var中会使我的赋值消失?为了进一步概括,var前面必须没有非空白字符。 最佳答案 对您的问题的简短回答是,您不能使用变量语句作为在if中求值的表达式。更详细的答案是,根据ECMA-262s12.5,if语句具有以下

javascript - 在紧凑的 JavaScript 循环中使用 var 会增加与内存相关的开销吗?

例如,会这样:while(true){varrandom=Math.random();}...在大多数实现中效率低于以下?varrandom;while(true){random=Math.random();}感谢您的输入。编辑:如果不是很明显,我主要担心此示例中会发生大量重复(取消)分配。 最佳答案 JavaScript没有block作用域。在第一个例子中,vartext声明是hoisted在whileblock之外。在这两种情况下,变量只声明一次。在这两种情况下,每次while循环迭代都会为变量分配一个值。var函数-作用域提升

javascript - vars 存储在 Nodejs 中的什么位置?

这个问题在这里已经有了答案:Inwhatscopearemodulevariablesstoredinnode.js?(4个回答)3年前关闭。在任何Web浏览器中执行以下脚本将导致'wee'被发送到控制台。在Node中,它发送{}。vard='wee';console.log(this.d);我意识到在这种情况下,Nodethis指的是导出对象。我确实知道global变量,这不是我想要访问的。此外,上面的脚本也没有在全局对象上设置d。它到底去哪儿了?我可以在上面的脚本中通过console.log(d);显式访问它,但它似乎毫无理由地隐藏在一些非标准空间中。我还意识到删除var将在d对象

javascript - Javascript 的缺点 "single var pattern"

在Stefanov的JSDesignPatterns一书中,他写道“你使用一个var语句并声明多个以逗号分隔的变量”,然后给出了一个“单一var”模式的示例,如下所示:functionfunc(){vara=1,b=2,sum=a+b,myobject={},i,j;Stefanov还写道:“在声明变量时也使用初始值对其进行初始化是一种很好的做法。”“您也可以在声明时做一些实际工作,例如前面代码中sum=a+b的情况。”现在我有一些代码如下,使用单个var模式声明了相同数量的变量,但做了更多的“声明时的实际工作”:varhtml='{purchaseQty}FR: {from

javascript - [-1,1][+!!boolean_var] 的含义

谁能解释一下在下面的代码中对reversevar进行双重否定的目的?returnfunction(a,b){varA=key(a),B=key(b);return((AB)?+1:0))*[-1,1][+!!reverse];}我的理解是,目的是从[-1,1]数组中选择正确的索引,然后在乘法中使用它,但在我看来[-1,1][+!!reverse];可以安全地替换为[-1,1][+reverse];我错了吗?通过在那里对reverse进行双重否定,你会获得或阻止什么?我在thisanswer.上看到了上面的代码 最佳答案 最简单的答案

JavaScript,如何以最有效的方式从字符串中获取第二个值,如 "var1-var2"

我知道.split("-",2),但我怎样才能做出这样的东西varstr="123-341235";alert(str.split("-",2).[2])谢谢大家的帮助! 最佳答案 我看到两个简单的解决方案,它们的性能大致相同:varstr="123-341235";str.split('-')[1];//=>"341235"(slower)str.slice(str.indexOf('-')+1);//=>"341235"(faster)这jsPerfbenchmark显示“slice/indexOf”解决方案在Chrome和Fi

javascript - 哪个更快 : if (var == 'value' ) OR if (/value/. test(var))

哪个更快:if(var=='value')或if(/value/.test(var)) 最佳答案 if(var=='value')。很多。但是,如果您真的想要快,请执行if(var==='value')。与类型强制等效相比,严格等效要做的工作要少得多。 关于javascript-哪个更快:if(var=='value')ORif(/value/.test(var)),我们在StackOverflow上找到一个类似的问题: https://stackoverfl

javascript - 在 ajax 请求中使用 "var"关键字时非常奇怪的行为

我已经为此担心了一段时间,但我无法意识到到底发生了什么。代码注释中的解释。一个应用程序有2个版本,其中一个会抛出奇怪的结果,而第二个会执行预期的工作。varid="test1";$.post("http://fiddle.jshell.net/echo/json/",{"data":"data"},function(a){alert(id);//willthrowundefinedvarid="test2";alert(id);//willthrow"test2"asexpected});$.post("http://fiddle.jshell.net/echo/json/",{"da