草庐IT

Javascript TRUE 和 "true"为什么有人使用字符串而不是 boolean 值?

我在一些javascript代码中看到人们写这样的东西:varmyVar="true";//...if(myVar=="true"){//...}else{//...}为什么人们不使用TRUE或FALSE?据我所知,boolean类型对于浏览器来说是显而易见的。或者只是一个糟糕的代码......并且尽量不要以这种方式编写。 最佳答案 这只是糟糕的代码。尽量不要这样写。这种代码的可维护性非常糟糕。==(而不是===)和true作为字符串。PS:此外,"true"==true//false。对于===参数,这仅仅是因为true==1//

javascript - "-[1, ]"在 "if(!-[1, ] && !window.XMLHttpRequest)"中是什么意思?

我找到下面的代码,但我看不懂。if(!-[1,]&&!window.XMLHttpRequest){document.execCommand("BackgroundImageCache",false,true);}if(!-[1,])是什么意思?谢谢 最佳答案 检测旧版InternetExplorer是一种技巧。-[1,]在现代浏览器中是-1(所以false和!)但是NaN在旧的IE中(true被否定)。第一个返回正确结果的版本是IE9。 关于javascript-"-[1,]"在"if

javascript - 为什么在 JS 中用匿名函数包装每个原型(prototype) "class"对象?

查看thisJScode通过DavidFowler他用一个匿名的自执行方法包装每个“类”,他在其中发送jQuery和window。我知道这是一种确保$和window实际上是您期望的全局jQuery和winndow变量的方法。但这不是有点过度保护了吗?您是否应该保护自己免受其他人更改$和window变量的影响-实际上是否有代码可以做到这一点,如果有,为什么?另外,像这样包装所有东西还有其他优势吗? 最佳答案 如果我没记错的话,除了jQuery之外,还有其他一些库使用$. 关于javascr

javascript - 访问原型(prototype)中的 "private"变量

是否可以在JavaScript中创建一个可以在原型(prototype)中访问的私有(private)变量?我尝试了以下obviouslydoesn'twork,因为bar只能从Foo中访问,而不能从原型(prototype)中访问。functionFoo(){varbar='test';}Foo.prototype.baz=function(){console.log(bar);};我知道我也不能使用this.bar='test',因为那样会使thepropertypublic据我所知。如何使bar变量私有(private),但可由原型(prototype)访问?

javascript - 有条件 "not equal to a and not equal to b"等的 JS 简写吗?

我只是想知道是否有一些JS简写是这样的:if(x!=1&&x!=2)dostuff;这样的野兽存在吗?相反,我想说这样的话:if(x!=1:2)dostuff; 最佳答案 不,没有这样的速记。如果不想重复变量,可以使用开关:switch(x){case1:case2:break;default:dostuff;}另一种方法是在数组中查找值:if([1,2].indexOf(x)==-1)dostuff;但是,Array.indexOf并非在所有浏览器中都存在,因此您可能需要一个后备方案,例如您可以在MozillaArray.inde

javascript - 如何在 javascript 中按空格拆分字符串,除非空格出现在 "quote"之间?

这个问题在这里已经有了答案:Splitastringbywhitespace,keepingquotedsegments,allowingescapedquotes(4个答案)javascriptsplitstringbyspace,butignorespaceinquotes(noticenottosplitbythecolontoo)(3个答案)关闭9年前。最终我试图改变这个:varmsg='-m"thisisamessage"--echo"anothermessage"testarg';进入这个:['-m','thisisamessage','--echo','anotherme

javascript - "this"的范围

我有一个简单的对象,我不明白this的概念(作用域)是通过调用这个对象的函数来实现的。为什么在最后一个变体(3)中调用show()(使用函数show()insideobjectwithoutparent)结果是“Thisisglobal”并且不是内部变量title("ColorPicker")?我有一个模糊的想法,即在定义全局变量show之后调用函数popup.show(),this指的是全局对象。这是逻辑解释吗?代码:http://jsbin.com/otuzac/1/edit.vartitle="'This'isglobal";varpopup={dom_element:("#po

javascript - 为什么 "requestAnimationFrame"递归不会耗尽 RAM?

正如标题,为什么requestAnimationFrame递归不会吃掉RAM。这post说V8引擎没有对tailcall进行优化,所以我想我一定漏掉了什么。那是因为浏览器在背后做了什么吗?还是V8支持tailcall的优化?这是MDN的example:functionstep(timestamp){varprogress=timestamp-start;d.style.left=Math.min(progress/10,200)+"px";if(progress 最佳答案 requestAnimationFrame通知浏览器它希望在

javascript - 告诉 ember.js 为其模型的 "id"使用不同的 key

我陷入了不应该在API端点中返回id字段的情况。我需要告诉ember将slug字段用于/而不是id。我尝试了DS.RESTAdapter.map('App.Post',id:{key:'slug'})。虽然这对App.Post.find("a-slug-name")非常有效,但它对App.Post.find()造成了困惑,导致添加了一个每次调用新模型。并将id分配给null。那么我应该怎么做。 最佳答案 您需要在适配器中指定应该用作primaryKey的属性。如果您希望slug属性用作您的Post模型id,请像这样在您的Adapte

javascript - JavaScript 中有 "createObject"吗?

在VBScript中有一个叫做CreateObject的函数,可以通过网页在客户端运行。我以前用过它:SeticaObj=CreateObject("Citrix.ICAClient")CitrixVersion=icaObj.ClientVersion找出客户端计算机上安装的应用程序版本。JavaScript中有类似的东西吗? 最佳答案 IstheresomethingcomparableinJavaScript?不是在JavaScript中,而是在有限环境中的Microsoft的JScript中,是的:varicaObj=new