草庐IT

javascript - 为什么行尾需要分号?

为什么这样做:a=[]a.push(['test']);(function(){alert('poop')})()但这给出了错误“numberisnotafunction”:a=[]a.push(['test'])(function(){alert('poop')})()唯一的区别是第2行末尾的分号。我已经编写JavaScript很长时间了。我知道自动分号插入,但我不知道是什么导致了这个错误。 最佳答案 看看这个链式函数调用的例子。a.push(['test'])(function(){alert('poop')})()看起来很眼熟

javascript - 使用 PEG.js 解析缩进级别

我的问题与PEGforPythonstyleindentation基本相同,但我想得到更多关于thisanswer的指导.答案成功生成了一个字符串数组,这些字符串是每行输入,行与行之间带有“INDENT”和“DEDENT”。看起来他几乎使用PEG.js来标记化,但没有真正的解析发生。那么我怎样才能扩展他的例子来做一些实际的解析呢?举个例子,我怎样才能改变这个语法:start=objobj=id:idchildren:(indentobj*outdent)?{if(children){leto={};o[id]=children[1];returno;}else{returnid;}}i

javascript - 将复杂的 JavaScript 对象转换为点符号对象

我有一个像这样的对象{"status":"success","auth":{"code":"23123213","name":"qwertyasdfgh"}}我想将它转换为点符号(一级)版本,例如:{"status":"success","auth.code":"23123213","auth.name":"qwertyasdfgh"}目前我正在使用字段手动转换对象,但我认为应该有更好、更通用的方法来执行此操作。有吗?注意:有一些例子显示相反的方法,但我找不到确切的方法。注意2:我希望它与我的服务器端Controller操作绑定(bind)一起使用。 最佳答

javascript - 没有 TypeError 的深度 Javascript 检查是否未定义

我已经厌倦了写这样的东西if(typeofFoo!='undefined'&&typeofFoo.bar!='undefined'&&typeofFoo.bar.baz!='undefined'&&Foo.bar.baz=='qux'){...}在PHP中它稍微好一点:if(!empty($foo['bar']['baz'])&&$foo['bar']['baz']=='qux'){...}理想情况下:functionu(value){return(typeofvalue!='undefined')?value:null;}if(u(Foo.bar.baz)=='qux'){...}但

javascript - 使用这种语法的原因是什么 (0, _.Em)();

在调查googleplusone脚本时,我多次看到以下语法:(0,_.Em)();假设_.Em是一个函数,上面的语句将导致调用该函数,这是很明显的。另一方面,如果它是未定义的,结果会不会与简单的_.Em()相同?谁能阐明使用这种语法背后的想法是什么? 最佳答案 基本上,此语法允许在window对象而不是_的上下文中调用_.Em()。假设你有这段代码:Foo=function(){this.foo="foo";};Foo.prototype.Em=function(){alert(this.foo);};var_=newFoo();发

javascript - ES6 : Applying function as class method

我正在将一个项目从CoffeeScript迁移到ES6(使用6to5和Browserify),并且遇到了可能的限制或者我可能只是不知道正确的语法。在CoffeeScript中我可以这样做:classSomeViewextendsBaseViewtriggerMethod:Marionette.triggerMethod如何在ES6类中表达这一点?我尝试了几件事,但无论我尝试什么,它都会抛出Unexpectedtoken错误。这例如:let{triggerMethod}=Marionette;classSomeViewextendsBaseView{triggerMethod,//doe

javascript - 具有变量和多个值的 jQuery .css() 函数

奇怪的小困惑。我正在使用jQuery的.css()方法通过变量更改文本的大小(说来话长;不,我不能使用媒体查询),我需要添加em给它。我不确定语法是什么,因为CSS更改有多个值。举例说明:这非常有效。它将em添加到victore的计算值中:$('h1').css('font-size',victore+'em');这不是:$('h1').css({'font-size':victore+'em','line-height':vignelli+'em';});em需要引号...但是值也需要。用括号包裹它不起作用 最佳答案 你不应该在整

javascript - 这是什么 : sign after a variable JS syntax?

在查看svelte库时,我在JS中遇到了以下有效语法:$:doubled=6*2;起初,我以为它是特定于库的,但它适用于Chrome控制台。这是什么语法?它可以是任何东西:name:something=6*2; 最佳答案 任何JavaScript语句(函数声明除外)都可以在标签之前:foo:varx=0;你得到的是这样的东西:$:doubled=6*2;在您的声明中,“$”是标签。标签语句没有多大意义,因为JavaScript中没有goto。break和continue都可以包含一个封闭循环的标签,以指示应该涉及多少“层”。whol

javascript - [] 前没有分号导致 JavaScript 出错

vara=[1,2,3,4];varb=[10,20,30,40];console.log([a,b].length)[a,b].some(function(x){x.push(x.shift())});今天当这段代码导致我非常惊讶[a,b].some(function(x){x.push(x.shift())});^TypeError:Cannotcallmethod'some'ofundefined显然,JavaScript的“自动分号插入”在这里没有按预期工作。但是为什么?我知道你可能会建议在任何地方都使用;来避免类似的事情,但问题不在于使用;是否更好。我很想知道这里究竟发生了什

javascript - Javascript 的 "this"有什么更好的名称?

我来自Java背景,具有基于类的继承模型,试图了解Javascript基于原型(prototype)的继承模型。让我失望的部分原因是,我牢牢记住了Java中“this”的含义——而Javascript中的“this”是一个非常不同的野兽。我知道Javascript的“this”总是指函数的调用者,而不是函数定义的范围——我的意思是,我已经阅读并从表面上理解它的意思。但我想更深入地了解它,我认为为它起一个新的名字会有所帮助。你如何看待JS的“this”?是不是每次碰到都会做心理置换?如果是这样-你使用什么词或短语? 最佳答案 this