Questions tagged «javascript»

JavaScript(不要与Java混淆)是一种高级,动态,多范式,弱类型的语言,用于客户端脚本和服务器端脚本。使用此标记可解决有关ECMAScript,JavaScript,JScript等的常见实现的问题。JS通常不引用其ECMA-表兄弟ActionScript。

6
Facebook React与Web Components(聚合物)的优缺点
相较于即将发布的Web组件规范,Facebook的React有什么主要好处,反之亦然(或者与Google的Polymer库相比,也许更多的苹果之间的比较)? 根据这次JSConf EU演讲和React主页,React的主要好处是: 使用组件模型去耦和增加内聚力 抽象,组成和表现力 虚拟DOM和综合事件(这基本上意味着它们完全重新实现了DOM及其事件系统) 在IE 8上启用现代HTML5事件内容 服务器端渲染 可测性 绑定到SVG,VML和 <canvas> 除了这个虚拟DOM概念(显然)之外,几乎所有提及的内容都是通过Web组件本地集成到浏览器中的。我可以看到虚拟DOM和合成事件在今天对于支持旧的浏览器有何好处,但是不会扔掉大量的本机浏览器代码,而不是像从长远来看那样吗?就现代浏览器而言,这不是很多不必要的开销/重新设计吗? 我认为这是React缺少的一些内容,Web组件会为您提供帮助。如果我错了纠正我。 本机浏览器支持(请阅读“保证更快”) 以脚本语言编写脚本,以样式语言编写样式,以标记语言编写标记。 使用Shadow DOM进行样式封装 相反,React具有this,这需要使用JavaScript编写CSS。不漂亮。 双向装订
521 javascript  html 

7
在JavaScript中使用==是否有意义?
Douglas Crockford 在JavaScript中的Good Parts中写道: JavaScript有两套相等运算符:===和!==,以及它们的邪恶孪生子==和!=。优秀的产品以您期望的方式工作。如果两个操作数具有相同的类型并具有相同的值,则===产生true和!==产生false。当操作数是相同类型时,邪恶双胞胎会做正确的事情,但是如果操作数是不同类型,则它们会试图强制值。他们所依据的规则是复杂而难忘的。这些是一些有趣的情况: '' == '0' // false 0 == '' // true 0 == '0' // true false == 'false' // false false == '0' // true false == undefined // false false == null // false null == undefined // true ' \t\r\n ' == 0 …

5
是否有任何理由在ES6中使用“ var”关键字?
Babel ES6指南说: let是新的var。 显然,唯一的区别是var将作用域限定为当前函数,而let将作用域限定为当前块。这个答案有一些很好的例子 。 我看不出有任何理由var在ES6代码中使用。即使您希望将给定变量的作用域限定在整个函数中,也可以let通过将声明放在功能块的顶部来实现,这是您应该执行var的操作以指示实际作用域。而且,如果您想在某个for块或某个范围内更精细地确定范围,则也可以这样做。 所以我的直觉是var在编写ES6代码时完全停止使用。 我的问题是,我对此有误吗?有什么合理的情况比它var更可取let吗?
260 javascript  es6 

6
在ES6中应该使用多少个“ let”和“ const”?
我最近一直在为io.js写很多ES6代码。没有太多可学习的代码,所以我觉得自己正在定义自己的约定。 我的问题是有关何时使用constVS let。 我一直在应用此规则:如果可能,请使用const。仅let当您知道其价值需要改变时才使用。(如果以后发现您需要更改其值,则可以随时将其更改const为a let。) 此规则的主要原因是易于一致地应用。没有灰色区域。 问题是,当我应用此规则时,实际上95%的声明是const。这对我来说很奇怪。我只使用let的东西像i一个for循环,或偶尔搞什么积累斐波那契数总数(不拿出在现实生活中很多)。我对此感到惊讶–事实证明,到目前为止,我的ES5代码中95%的“变量”是针对不变的值。但是,看到const我的代码全都感觉不对。 所以我的问题是:可以使用const这么多吗?我真的应该做类似的事情const foo = function () {...};吗? 还是我应该保留const那些在模块顶部对文字进行硬编码的情况const MARGIN_WIDTH = 410;?
214 javascript  es6 

1
为什么本机ES6承诺比bluebird更慢且占用更多内存?
在此基准测试中,与Bluebird Promise相比,套件完成ES6 Promise的时间要长4倍,并且使用的内存是3.6倍。 JavaScript库如何比用C编写的v8本机实现更快,更轻巧?Bluebird Promise与本机ES6 Promise具有完全相同的API(以及大量额外的实用程序方法)。 是本机实现编写得不好,还是我缺少其他方面?

8
开发使用寿命长(超过20年)的Web应用程序
我目前正在开发用于政府土地规划的Web应用程序。该应用程序主要在浏览器中运行,使用ajax加载和保存数据。 我将进行初始开发,然后毕业(这是学生的工作)。此后,其余团队将根据需要添加偶尔的功能。他们知道如何编码,但他们大多是土地规划专家。 考虑到Javascript技术的变化步伐,我如何编写从现在起20年后仍然可以使用的代码?具体来说,我应该使用(或避免使用)哪些库,技术和设计思想来对我的代码进行过时的验证?

15
为什么像Java,Javascript和C#这样的内存管理语言保留了“ new”关键字?
newJava,Javascript和C#等语言中的关键字会创建类的新实例。 该语法似乎是从C ++继承的,在C ++中该语法new专门用于在堆上分配类的新实例,并返回指向该新实例的指针。在C ++中,这不是构造对象的唯一方法。您还可以在不使用new-的情况下在堆栈上构造一个对象,实际上,这种构造对象的方式在C ++中更为常见。 因此,来自C ++背景,newJava,Javascript和C#等语言中的关键字对我来说似乎很自然并且很明显。然后,我开始学习没有new关键字的Python 。在Python中,只需调用构造函数即可构造实例,例如: f = Foo() 最初,这对我来说似乎有点不对劲,直到我想到Python没有理由拥有它new,因为所有内容都是一个对象,因此无需区分各种构造函数语法。 但是后来我想new-Java 的真正意义是什么?我们为什么要说Object o = new Object();?为什么不只是Object o = Object();呢?在C ++中,绝对需要new,因为我们需要区分在堆上分配和在堆上分配之间的区别,但是在Java中,所有对象都在堆上构造,那么为什么还要使用new关键字呢?对于Javascript,可能会问同样的问题。在我不太熟悉的C#中,我认为new在区分对象类型和值类型方面可能有一些用途,但是我不确定。 无论如何,在我看来,C ++之后的许多语言只是“继承”了new关键字-并不需要它。它几乎像一个残余关键字。我们似乎出于任何原因都不需要它,但是它在那里。 问题:我对此是否正确?还是有一些令人信服的理由new需要以C ++启发的内存管理语言(例如Java,Javascript和C#)而不是Python?

3
结构化日志记录与基本日志记录的优点
我们正在构建一个新的应用程序,我想包括结构化日志记录。我理想的设置应该是SerilogC#代码和BunyanJS。fluentd我最初想到的是,这些东西会进入然后可能会涉及到许多事情elasticsearch + kibana。我们已经有一个MySQL数据库,因此在短期内,我对获得Serilog + Bunyan设置和开发人员使用它更感兴趣,我们可以登录MySQL,同时花更多的时间来流利地进行其余工作。 但是,我们经验丰富的编码人员之一更喜欢做类似的事情:log.debug("Disk quota {0} exceeded by user {1}, quota, user);使用log4net然后对MySQL运行select语句,例如:select text from logs where text like "Disk quota"; 话虽这么说,哪种方法更好,和/或在选择日志系统类型时我们需要考虑什么?
110 c#  javascript  mysql  logging 

3
蹦床为什么起作用?
我一直在做一些功能性JavaScript。我以为已经实现了尾叫优化,但是事实证明我错了。因此,我不得不自学流浪汉。在这里和其他地方稍作阅读后,我便掌握了基础知识并构造了我的第一个蹦床: /*not the fanciest, it's just meant to reenforce that I know what I'm doing.*/ function loopy(x){ if (x<10000000){ return function(){ return loopy(x+1) } }else{ return x; } }; function trampoline(foo){ while(foo && typeof foo === 'function'){ foo = foo(); } return foo; /*I've seen trampolines without this, mine wouldn't …

2
到底是什么JavaScript?
这一切始于我正在寻找一种方法来测试我的网页的JavaScript一致性,例如W3C HTML Validator。我还没有找到。所以让我知道你是否知道任何... 我在JavaScript的官方页面中找到了ECMA Script。这些人已经将脚本语言标准化(我不再喜欢用JavaScript!),并将其称为ECMA-262(维基百科)。他们的最新作品是5.1版 JavaScript由Mozilla Corporation开发,其最后一个稳定版本是1.8.5(请参阅此),它基于ECMA的5.1版。 链接的Wikipedia页面提到了方言。Mozilla的JavaScript 1.8.5与JScript 9(IE)和JavaScript(Chrome的V8 [ Wiki ])以及许多其他语言一起被列为方言。我是否知道JavaScript 1.8.5是ECMA-262的派生产品,而SpiderMonkey [ Wiki ]是运行它的引擎?Chrome拥有自己的方言,而运行它的程序是V8引擎? 基于所有基于ECMA-262的方言,我再也无法理解“什么是JavaScript ”?有没有真正的跨浏览器脚本语言?各种实现者是否齐心协力就方言交叉兼容性达成共识?这是ECMA的努力吗?

6
不变性是否会损害JavaScript的性能?
JavaScript中似乎有一种趋向于将数据结构视为不变的趋势。例如,如果您需要更改一个对象的单个属性,则最好使用新属性创建一个全新的对象,然后从旧对象复制所有其他属性,然后对旧对象进行垃圾回收。(那是我的理解。) 我最初的反应是,这听起来会降低性能。 但是后来,像Immutable.js和Redux.js这样的库是由比我更聪明的人编写的,并且似乎对性能有很强的关注,因此使我怀疑我对垃圾的理解(及其对性能的影响)是否错误。 我所缺少的不变性是否具有性能优势,它们是否超过了创建大量垃圾的弊端?

28
优雅地降级JavaScript有多重要?
Web开发人员是否应该继续努力用JavaScript逐步增强我们的Web应用程序,以确保功能正常降级,从而确保可访问性?还是我们应该花时间专注于新功能或其他开发领域? 该问题的潜台词是:有多少客户/客户/用户在禁用JavaScript的情况下使用我们的网站或应用程序?您是否有任何项目要求特别要求JavaScript功能(几乎是我的全部要求),并且这些要求还要求正常降级吗? 为了提出这个问题,我在未启用JavaScript的情况下调出了developers.stackexchange.com,并收到以下消息:“程序员-Stack Exchange在启用JavaScript的情况下效果最佳”。尽管该站点通常可以正常工作,但登录非常困难。(我无法投票解决任何问题。) 我认为这是令人满意的发展方法。想象一下,使网站的所有功能都可以与普通的旧HTML和服务器端逻辑一起使用时所付出的努力。另一方面,我想知道有多少用户被这种方法疏远了。 我们所有人(至少是我们当中优秀的开发人员)都经过培训,可以使用渐进式增强功能并确保我们的Web应用程序的动态功能正常降级。是这种渐进式增强只是随风而上,还是我们的某些客户实际上在未启用JavaScript的情况下真正利用了某些Web服务?

6
使用纯JavaScript优于JQuery的优势
与仅使用JQuery相比,仅使用Javascript有何优势? 我对JavaScript和JQuery编码的经验有限。我已经在HTML页面中添加了每个代码的片段,但是我主要使用其他语言对服务器端的东西进行了编码。我注意到,虽然理论上您可以使用两种方法中的任何一种来做相同的事情(当然,您甚至可以将它们混合在同一项目中),但似乎总是有从一开始就始终使用JQuery的趋势。没什么,项目需求是什么。 因此,我只是想知道,不使用仅JQuery而是仅使用普通的旧JavaScript有任何准时的好处吗? 我知道这看起来像是一个毫无疑问的问题,因为可以说“没有确定的答案”或“可以永远争论不休”,但是我实际上希望能如“您可以在一种方法,而另一种则不能。” 根据scrwtp的评论,我并不是仅指DOM处理部分。我的问题是:JQuery是一个库。对于Javascript。与该库相对于其他语言的其他库相比,我觉得奇怪的是,在JQyery的情况下,它似乎被设计为能够专门使用它,而无需直接接触Javascript。这与Hibernate和SQL相对,尽管库(或框架,在这种情况下,但我认为类推仍然适用)在很多方面都可以使用,但在使用SQL时仍然可以使用SQL ,至少在某些情况下如此。但是,在JQuery和Javascript的情况下,您可以只使用JQuery来处理Javascript(或者至少对我来说是如此)。 根据Stargazer712的评论:是的,我同意您的意见,这里的问题是,正如您所说的那样,“仅取决于您将如何使用JavaScript”。那就是我真正想问的,但是我做了一些不好的表述。这是另一个比喻:Spring Expression Language。这是一个Java库。没有Java,您将无法使用它,它基于Java,直到您仍然使用Java为止。但是实际上,您可以做的是将该库添加到Java项目中,然后使用Spring EL的表达式语言编写所有代码,这实际上使您的代码根本不类似于Java,甚至发生了范式转换(例如,您不再拥有使用此类型时强类型强制执行)。虽然我确实知道JQuery只是一个JS库,但在我看来,它实际上与Spring EL对于Java具有相同的效果,即,您只能在整个项目中使用它的API,而避免使用JavaScript的API。我想知道这是否是一件好事,可能有什么陷阱等。 (是的,在阅读了每个人的答案后,我确实了解到: 一种。我的问题在某种程度上有点荒谬 b。即使该问题完全正确,其答案也将是“不,您不能一直只使用JQuery”

22
开发人员如何找到时间掌握最新技术?[关闭]
我是一名自由职业的Web开发人员,直到2004年左右,当我开始走上管理之路时,我决定再次尝试重新开发(特别是JavaScript和HTML5 Web /移动Web应用程序),我的确给人以真正的擅长这些技术和类似的快速发展技术除了学习新技能之外,还需要拨出一定的时间来投资以提高现有技能。 我现在就了解了,因为我重新开始学习时,学习曲线非常陡峭,但是看到那里有很多人-我看到的唯一的方法就是花大量的时间。 对于那些从事全职开发人员的工作,我想了解的是-在大多数情况下,与学习/研究相比,在办公室实际花费了多少时间来编写代码。我可以轻松地每天花费2-4个小时来掌握做事的最佳方法。 大多数全职工作的优秀开发人员是否在工作以外投入大量时间提高技能? 还是我正在查看所有这些完全错误的信息?

2
是否有实际上适用于Java的OO原理?
Javascript是一种基于原型的面向对象语言,但是可以通过以下多种方式变为基于类的语言: 自己编写要用作类的函数 在框架中使用漂亮的类系统(例如mootools Class.Class) 从Coffeescript生成 一开始,我倾向于使用Javascript编写基于类的代码,并高度依赖它。但是最近我一直在使用Javascript框架和NodeJS,它们脱离了类的概念,而更多地依赖于代码的动态特性,例如: 异步编程,使用和编写使用回调/事件的编写代码 使用RequireJS加载模块(以便它们不会泄漏到全局名称空间) 功能编程概念,例如列表推导(映射,过滤器等) 除其他事项外 到目前为止,我所收集的是,我已阅读的大多数OO原理和模式(例如SOLID和GoF模式)都是为基于类的OO语言(例如Smalltalk和C ++)编写的。但是其中有哪些适用于基于原型的语言(例如Javascript)? 是否有特定于Java的原则或模式?避免回调地狱,邪恶的eval或任何其他反模式的原则。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.