草庐IT

javascript - 在浏览器控制台中键入时,var x=10 和 x=10 有什么区别?

在浏览器控制台中,如果我键入varx=10,它会显示undefined,而如果我键入x=10,它会显示10。两者执行相同的任务那么有什么区别呢?我不是问使用var和不使用var的区别? 最佳答案 你在浏览器控制台中,所以你在全局范围内,有或没有var对变量的存储方式没有影响:但是,=是一个运算符,它返回您分配的值,因此a=1的计算结果为1,您会看到a2当您键入b=2时。var不返回任何内容,它是一个语句而不是表达式。 关于javascript-在浏览器控制台中键入时,varx=10和x=

javascript - 为什么在将 javascript 函数分配给不同的 var 后不能通过其原始名称访问它?

varf=functionfoo(){console.log("hello");};f();foo();这会产生一个错误:“Exception:ReferenceError:fooisnotdefined”但是“foo”被定义了。为什么会这样?我知道这是一个函数表达式,“f()”是用来访问这个函数的。但这不是匿名函数,我确实有这个函数的名称。为什么我无法使用其名称访问该函数? 最佳答案 MDN-函数表达式语法varmyFunction=function[name]([param1[,param2[,...,paramN]]]){st

javascript - javascript 关联数组中的属性名称 "var"

出于好奇的快速提问:下面的代码在Firefox和Chrome中有效,但在Safari中无效。Firefox和Chrome规避了这个Javascript规范,还是Safari中的一个怪癖?vara={};a.var="test";全部(firefox、safari和chrome)a["var"]="test";a.id="anothertest";按预期工作。干杯,杰伦。 最佳答案 var是保留关键字,因此在不加引号的情况下使用它可能会中断。 关于javascript-javascript

javascript - “var” 变量、"this"变量和 "global"变量 - 在 JavaScript 构造函数中

在我上一个问题之后,这个问题对我来说更准确:例子:functionFoo(){this.bla=1;varblabla=10;blablabla=100;this.getblabla=function(){returnblabla;//exposesblablaoutside}}foo=newFoo();我现在的理解:this.bla=1;//willbecomeanattributeofeveryinstanceofFOO.varblabla=10;//willbecomealocalvariableofFoo(will**not**becomeanattributeofeveryi

javascript - 为什么 let 语句的行为与 var 如此不同?

我知道let是声明block作用域局部变量,但为什么它不像var那样支持重新声明和提升?这个限制的设计目的是什么?(function(){'usestrict';alert(a);//undefinedvara;})();(function(){'usestrict';alert(a);//errorleta;})();(function(){'usestrict';vara;vara;alert(a);//undefined})();(function(){'usestrict';leta;leta;//erroralert(a);})(); 最佳答案

javascript - 如何将 fingerprint2 结果存储在 var 中

我打算将fingerprint2结果存储在一个var中。varinfo={};newFingerprint2().get(function(result,components){info.fingerprint=result;});alert(info.fingerprint);但没用有没有更好的方法,比如:varfp=newFingerprint2().get();还是一些增强的方法?编辑:现代且灵活的浏览器指纹识别库,原始fingerprintjs的继承者http://valve.github.io/fingerprintjs2/用法:newFingerprint2().get(f

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函数-作用域提升