草庐IT

javascript - JavaScript 中的赋值和 var 关键字

我在阅读“学习Node”这本书时遇到了一个非常简单的问题,一个我没有考虑太多的问题:javascript中的赋值。作者声明我们应该意识到通过使用Node的REPL,以下将返回未定义的:vara=2(undefined)而下面的代码将在REPL中返回“2”:a=22这是为什么呢?上面的代码不是属性?怎么会?如果var'a'直到代码中的那个点才存在,为什么它不存在和归属? 最佳答案 根据ECMA-262§12.2,VariableStatement(即varidentifier=value)显式不返回任何内容。此外,VariableSt

javascript - html 链接,来自 Javascript 函数的 href 赋值

我有一个简单的Javascript函数,它构建了一个我想提供链接的Url。但是,我似乎无法使用anchor标记。如何将Javascript函数的结果分配给anchor标记的href?这些都不能正常工作:ClickhereClickhere这就是我想要完成的。 最佳答案 functiongetUrl(){return"http://www.google.com";}Clickhere--更新--如果我想合并user278064s的评论,我会将上面的内容更改为:functiongetUrl(){return"http://www.goo

javascript - 使用javascript为多个输入框赋值?

您好,我在为多个输入框分配单个值时遇到了问题。我尝试了很多方法,但它只分配了1个文本框。如何分配多个文本框。注意:我所有的输入框都有相同的ID。我的代码如下UntitledDocumentfunctiongetInputs(){varinputs=document.getElementsByTagName('input');varids=newArray();for(vari=0;i有人能帮忙吗? 最佳答案 它只给其中一个赋值,因为ID应该是唯一的;因此,您实际上只会以第一个具有该值分配的目标为目标。更改您的HTML以改为使用类:然

Javascript 和函数原型(prototype)赋值

我一直假设一个函数的原型(prototype)在所有对象之间共享,在某种意义上是通过引用。因此,如果您更改原型(prototype)属性的值,则共享该原型(prototype)的所有对象的值也会更改。因此,例如下面的例子,它似乎不是在所有对象之间共享的属性栏,而是被复制的。这是正确的吗?构造函数原型(prototype)的属性是在创建时简单地复制到所有类对象,还是通过链接共享?functionfoo(){this.bar=1;}functionderived(){}derived.prototype=newfoo()object1=newderived()object2=newderi

javascript - 在 Javascript 中为 JSON 对象赋值

这就是我试图通过JavaScript以点或[]表示法构建的内容:varshoppingCart={'item1':{'description':'Thisisitem#1','price':10,'quantity':1,'shipping':0,'total':10}};现在如果'item1'是变量名itemName。这个有效:varshoppingCart={};shoppingCart[itemName]=itemName;alert(shoppingCart.item1);返回item1但这行不通:1varshoppingCart={};2shoppingCart[itemNa

javascript - JavaScript 中的链式赋值和循环引用

考虑以下语句:varfoo={n:1};foo.bar=foo={n:2};你能解释一下为什么foo.bar是undefined而不是foo吗? 最佳答案 在执行赋值运算符时,JS会先计算左边的部分。所以这个foo.bar=foo={n:2};被解释为评估foo.bar.这将返回一个引用{base:Object{n:1},property:bar}.然后评估第二个作业:2.1评估foo.这将返回一个引用{base:,property:foo}2.2。评估{n:2}.这将创建一个新对象。2.3放值:.foo={n:2}2.4返回{n:

javascript - 使用解构赋值交换元组元素

我想使用解构赋值就地交换元组的元素,如下所示:vara=[1,2];[a[1],a[0]]=a;但是,这会产生[1,1]。Babel将其编译为a[1]=a[0];a[0]=a[1];我本以为这应该编译为lettmp0=a[0];lettmp1=a[1];a[0]=tmp1;a[1]=tmp0;Traceur的行为与babel相同。所以我猜这是指定的行为?我想交换两个元素就地。唯一的方法就是...lettmp=a[0];a[0]=a[1];a[1]=tmp;但我认为以上是解构赋值应该让我避免不得不做的事情。我完全有能力颠倒数组中两个元素的顺序,所以这不是我的问题。我可以做一些像a.pus

javascript - 有人可以解释一下 e = e || X?为什么要把e赋值给e?

谁能解释一下这个语句是什么意思?e=e||x具体而言,e=e||window.event这出现在我正在查看的一段代码中。我并没有完全不知所措,但是我的理解是它将e和window.event(或x/whatever)都分配给了e。这是很自然的,对吧?但是将e赋值给e有什么值(value)呢?难道e=window.event就足够了吗?也许取决于它的使用方式? 最佳答案 e=e||x将x分配给e如果e评估为false。这等同于:if(!e){e=x;}//ore=e?e:x这是一个表格,显示哪些值评估为false:https://sta

javascript - 为什么+=(加法赋值,加上等于)在 Node 中这么慢?

这个问题在这里已经有了答案:Whatdoescompoundlet/constassignmentmean?(1个回答)关闭5年前。在某些版本的node中,a+=b明显比a=a+b慢,但在浏览器和更高版本中类似。是什么导致它们运行如此不同?nodev6.10.0(V85.1.281.93),慢75%,或者反向快4倍nodev8.0.0(V85.8.283.41),慢86%,或者反向快7倍nodev8.2.1(V85.8.283.41),慢86%,或者反向快7倍nodev8.3.0(V86.0.286.52),类似nodev8.7.0(v86.1.534.42),类似nodev8.9.2

javascript - 赋值表达式的标准格式是什么?

我在JavaScript中有以下函数,当通过JSLint运行它时,它对我大喊大叫,正如我所说。functiongetPos(event,element){varx=event.clientX,y=event.clientY,currentElement=element;do{x-=currentElement.offsetLeft-currentElement.scrollLeft;y-=currentElement.offsetTop-currentElement.scrollTop;}while((currentElement=currentElement.offsetParent