jjzjj

javascript - "bar"中 "var foo = function bar (){ ... }"的用途是什么?

在DouglasCrockford的书中,他将递归函数写为:varwalk_the_DOM=functionwalk(node,func){func(node);node=node.firstChild;while(node){walk(node,func);node=node.nextSibling;}}我从未见过定义为varfoo=functionbar(){...}的函数-我总是看到声明的右侧是匿名的:varfoo=function(){...}声明右侧的名称walk的唯一目的是缩短walk_the_DOM的调用吗?它们似乎成为相同功能的不同名称。也许我误解了这段代码的工作原理。

javascript - 为什么 ISN'T `foo: ' bar'` 是 Javascript 中的语法错误?

这个问题在这里已经有了答案:WhatdoesthecolonmeaninthisJavaScriptsnippet(notanobjectliteral)?(1个回答)关闭5年前。我的一个同事写了ES6代码行...returnmap(orderedContentUuids,contentUuid=>{uuid:contentUuid});你可能猜到他打算返回对象{uuid:contentUuid},但由于它是一个箭头函数,大括号{实际上开始了一个新block.(正确的代码应该是returnmap(orderedContentUuids,contentUuid=>({uuid:conte

javascript - 在 Javascript 中使用 this.variable 作为默认参数有什么问题吗?

如果我有一个像这样的ES6类:classFoo{constructor(bar){this.bar=bar;}echo(value=this.bar){returnvalue;}}每次调用echo时,都应重新计算this.bar。f=newFoo(10);f.echo();>>10f.bar=99;f.echo();>>99这种用法是否会产生任何潜在问题? 最佳答案 除了常见的jsthis问题外,没有什么大问题需要担心。您可以使用调用、绑定(bind)等方法将值注入(inject)此方法。这也可能导致错误和不一致。classFoo{

javascript - typeof foo ['bar' ] !== 'undefined' 与 foo 中的 'bar'

这两个表达式的返回值有什么区别...表达式1:typeoffoo['bar']!=='undefined'表达式2:'bar'infoo...假设满足这些条件:foo是一个对象,foo不包含任何显式设置了值undefined的属性。 最佳答案 第一个测试foo中bar的值。第二个测试foo中是否存在bar属性。varfoo={bar:undefined};typeoffoo['bar']!=='undefined';//false'bar'infoo;//true编辑:为了从下面的评论中添加一些说明,OP遇到的问题是访问window

javascript - "if (foo) bar();"和 "foo && bar();"之间的区别

这个问题在这里已经有了答案:Is&&statement()thesameasif()statement()?(5个答案)关闭9年前。以下两个片段之间是否有任何区别,或者有任何理由使用一个而不是另一个?if(foo){bar();}foo&&bar();

javascript - javascript数组和对象有固定顺序吗?

这个问题对于我当前涉及从JSON对象创建HTML表格的项目之一至关重要。我在想我可以创建函数,在将它们呈现为HTML之前对我的数组/对象进行排序。我唯一担心的是JavaScript中的顺序无关紧要,如果我要创建一个新的Array与另一个Array它们具有相同的数据(以不同的顺序)最终会完全相同。我想不出一个快速的方法来测试这个,所以我在这里问。 最佳答案 其他人已经回答了数组,所以我只是想提供一些关于对象的信息。就此而言,标准不存在,但它的事实上定义是对象将按插入顺序枚举,但数字按升序排列并首先枚举除外。我说的是典型情况,但这种行为

JavaScript 库模式

我正在尝试找出创建JavaScript库(类)的基本模式。我想以这样的方式进行,即它不会用一堆垃圾污染全局命名空间,但允许该类具有实例变量和修改这些实例变量的公共(public)方法。考虑以下玩具示例。我想创建一个类Foo。它应该包含一个实例成员bar,它是一个数字。Foo应该有一个构造函数,它接受一个数字并使用该数字初始化其实例bar。应该有一个实例方法,我可以调用Foo对象来修改bar。也许使用该库的代码如下所示:varfoo1=newFoo(1);varfoo2=newFoo(2);console.log(foo1.bar);//shouldprint"1"console.log

javascript - JS - 停止对象链方法没有错误

我们有一些Foo对象varFoo=function(){this.bar=function(bazinga){if(bazinga){returnthis;}else{returnfalse;}}this.show=function(){alert('bar');}};所以它允许我们做一些foo.bar().bar().bar().bar();链。但如果在链的中间,bar()将返回false,下一次bar()尝试将导致错误,即undefinedhasnomethodbar()这是ofc的事情。那么,当它的任何“环”返回false时,如何使所有链返回false而没有错误?FIDDLE

javascript - Chrome 扩展 : How can I show the find bar and supply text for it?

我正在制作一个扩展程序,将当前事件网页中的选定文本存储到本地存储中,然后当用户在我的扩展程序的弹出窗口中单击该选定文本时,该扩展程序将触发chrome.tabs.create并打开网站选定的文本被选中。这些功能有效,但我不知道如何在新选项卡打开时触发“查找”功能。我希望新创建的选项卡高度显示我的扩展程序存储的选定文本。我认为有两种方法可以做到这一点......以某种方式触发浏览器默认具有的“查找”功能。带有“Ctrl+F”或“Command+F”的触发并在其中插入所选文本通过突出显示所选文本来编辑新创建页面的HTML。new_source={"url":tab[0].url,"titl

javascript - 函数式 JavaScript : good practice to avoid argument mutation?

这是一个相当笼统的问题。函数式编程提倡这样一种想法,即程序是关于通过函数转换数据的,应该避免突变(除了可能在函数内,函数被视为抽象的基本单元)。但是在这个程序中:functionfoo(bar){bar.k1="bananas";returnbar;}varo={k1:"apples",k2:"oranges"};varp=foo(o);外部变量o在foo中发生了变化,因为bar是对o的引用,最后,o===p(它们引用同一个对象)。但功能范式更希望p是新数据。显而易见的解决方案是克隆参数(例如使用下划线/lodash的_.clone):functionfoo(_bar){varbar=