我有一系列数字,我需要确保它们是唯一的.我在互联网上找到了下面的代码片段,它的工作情况很好,直到数组中的数字为零.我发现这个其他脚本在SO上看起来几乎就像它,但它不会失败.
所以为了帮助我学习,有人可以帮我确定原型脚本出错的地方吗?
Array.prototype.getUnique = function() {
var o = {}, a = [], i, e;
for (i = 0; e = this[i]; i++) {o[e] = 1};
for (e in o) {a.push (e)};
return a;
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的问题,在我的脑海里停留了几天:什么是VanillaJS?有些人将其称为框架,您可以从官方页面下载库.
但是,当我查看一些示例或TodoMVC时,他们只使用经典的原始JavaScript函数,甚至不包括官方页面中的库或任何东西.此外,官方网页上的"文档"链接也会导致JavaScript的Mozilla规范.
我的问题是:VanillaJS是原始JavaScript吗?如果是的话,当你需要的是没有任何特殊包含脚本的浏览器时,为什么人们将它称为"框架"?
对于一个可能很愚蠢的问题我很抱歉,但当他们说"VanillaJS"时我不知道人们在谈论什么.
我已经着手开始正确使用jQuery和JavaScript.我很遗憾地说,从历史上看,我已经陷入了使用jQuery犯了很多非常糟糕的错误的开发人员类(污染全局命名空间,没有缓存jQuery选择器,以及更多有趣的东西 - 其中一些我确定我还没发现).
事实上,jQuery允许人们轻松实现一些非常强大的功能.但是,因为一切"正常",性能问题和最佳实践立即退居二线.
我一直在阅读有关JavaScript和jQuery性能和最佳实践的文章,我已经学到了足够的知识,可以完全意识到我真正缺乏经验.我感到沮丧,因为我不确定何时应该使用jQuery或只是简单的JavaScript.jQuery对我很有吸引力的主要原因是它负责浏览器的兼容性.根据我的理解,你可以用jQuery做些事情,你也可以使用不受兼容性问题影响的常规JavaScript.基本上我正在寻找一个指南,解释当使用jQuery而不是常规JavaScript时是明智的.
回顾几个问题:
是否存在由于性能而不应使用的jQuery部分?
你应该经常使用jQuery的哪些部分来避免浏览器的不一致?
你不应该使用jQuery的哪些部分,因为有一种可靠而快捷的方法可以在JavaScript中本地执行相同的操作?
jQuery的哪些部分提供了多种方法来做同样的事情,一种方式更有效?例如,:not()选择器与.not()方法.
我正在寻找现有文章,博客文章,书籍,视频等.我知道文档的位置.我经常读它们.我希望能有更多关于上述问题的概述.
谢谢!
编辑:
看看这个非常相似的问题:什么时候使用Vanilla JavaScript和jQuery?
像许多人一样,我通过学习jQuery来学习JavaScript.
最近我一直在替换像:
$(this).attr('title') 同 this.title
$(this).attr('id') 同 this.id
$(this).val() 同 this.value
$(this).parent() 同 this.parentNode
$(this).attr('class') 同 this.className
我的代码不仅更干净,而且在技术上更快.
这种减少是否可以接受和鼓励?
我应该在原始的 JavaScript而不是jQuery中做任何其他常见的做法吗?
这种减少主义是否存在任何潜在的跨浏览器问题?
我正在使用以下代码将事件附加到表单的提交按钮:
$('form.manage-users-form').on('click','button.special',function() {
if ($(this).hasClass('selected')){
console.log('This user is already special');
} else {
$(this).parent().find('button').removeClass('selected');
$(this).addClass('selected');
var user_id = $(this).closest("form[id]").val();
console.log('This user is now special');
console.log(user_id);
}
return false;
});
Run Code Online (Sandbox Code Playgroud)
你可以看到我也试图获取表单的id,但是当我检查控制台时我得到了(an empty string).为什么这样,我如何正确获取表单的ID?
有没有人知道是否有研究显示使用javascript库的性能开销(除了明显的下载时间)与使用基本的javascript?这些图书馆如此巨大,我很好奇.
从我的计算机科学学位来看,它似乎应该有增长.(换句话说,线性).
在计算机科学术语中,这没有威胁,但它如何实际影响页面加载时间和页面性能(以毫秒为单位)?我知道CPU是一个问题,RAM,等等.但是,是否有任何测试可以衡量这些事情?
我知道另一个因素是库经常被优化以执行与您以不太优化的方式手动编码相同的事情,但是库也有开销,并且不会使用所有这些功能.
编辑: 我发现这似乎彻底回答了我的问题,即使它开始的其他东西: 什么时候使用香草JavaScript与jQuery?
"由于评论很快指出(并且我同意100%),上面的陈述是指基准代码."本机"JavaScript解决方案(假设编写得很好)将胜过jQuery解决方案,几乎可以完成同样的事情.每个案例(我都希望看到一个例子).jQuery确实加快了开发时间,这是一个重要的好处,我并不是要淡化.它有助于易于阅读,易于遵循的代码,这不仅仅是一些开发人员能够自己创建.
在我看来,答案取决于你想要实现的目标.如果,正如我根据您对性能优势的引用所假设的那样,您可以在应用程序之后获得最佳速度,那么每次调用$()时使用jQuery都会引入开销.如果你想要提高可读性,一致性,跨浏览器兼容性等,那么肯定有理由支持jQuery优于"原生"JavaScript."
我经常搜索这个,但找不到我想要做的具体例子.基本上我想通过文本框的名称(而不是id)获取文本框的值.然后我想删除所有空格,不仅仅是前导或尾随,还要删除文本中的空格.例如,这个HTML代码:
<INPUT style="TEXT-ALIGN: right;" onkeyup="fieldEdit();" onchange="fieldChange();" NAME="10010input" VALUE="4 376,73" readonly >
Run Code Online (Sandbox Code Playgroud)
我有这个javascript:
var val = document.CashSheet.elements["10010input"].value;
val2 = val.replace(<someregex>, '');
alert(val2);
Run Code Online (Sandbox Code Playgroud)
但是我尝试了许多可用的正则表达式删除了所有空格,但是所有空格似乎只删除了前导和尾随空格,例如4 376,73以上的值应该在上面的警告中读作4376,73,但事实并非如此.在查看这个正常的正则表达式以从文本字段中删除空格后,内容不起作用,我相信它,因为它在Web服务器上的波兰语本地化设置中填充.什么\ u char/regex exp我需要捕获一个"波兰空间"可以这么说,在ascii它出现20但正则表达式大多数人建议空间不捕获它.
我有一个带id的选择字段appointment_stylist_id.出于某种原因,第一个返回我的元素,但第二个返回undefined:
console.log(dojo.byId('appointment_stylist_id'));
console.log(dijit.byId('appointment_stylist_id'));
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
我有一个这样的简单列表:
<ul id="large_box_custom_list">
<li id="8" class="large_box">Item 1</li>
<li id="13" class="large_box">Item 2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
然后我有一个像这样的jQuery函数:
$(function() {
$('li.large_box').css('cursor', 'pointer')
.click(function() {
var show_id = $(this).val();
alert(show_id);
});
});
Run Code Online (Sandbox Code Playgroud)
当我单击列表项时,当我期望值为8或13时,我的alery显示值为0.
var div = document.getElementById('foo');
console.log(div);
console.log(div.scrollHeight);
Run Code Online (Sandbox Code Playgroud)
当我在控制台点击第一条log返回的div的DOM时,它的scrollHeight为x,而第二条log打印出y;x != y。
javascript ×7
jquery ×4
performance ×2
arrays ×1
closest ×1
dojo ×1
spaces ×1
unique ×1
whitespace ×1